/* compute field offset */
switch (fields[i].type.atype) {
case atype_integer:
- case atype_enum:
case atype_enum_nestable:
field_offset += sizeof(int64_t);
break;
- case atype_array:
case atype_array_nestable:
- case atype_sequence:
case atype_sequence_nestable:
field_offset += sizeof(unsigned long);
field_offset += sizeof(void *);
return -EINVAL;
/* Check if field offset is too large for 16-bit offset */
- if (field_offset > FILTER_BYTECODE_MAX_LEN - 1)
+ if (field_offset > LTTNG_UST_ABI_FILTER_BYTECODE_MAX_LEN - 1)
return -EINVAL;
/* set type */
field_ref = (struct field_ref *) op->data;
switch (field->type.atype) {
case atype_integer:
- case atype_enum:
case atype_enum_nestable:
op->op = BYTECODE_OP_LOAD_FIELD_REF_S64;
break;
- case atype_array:
case atype_array_nestable:
- case atype_sequence:
case atype_sequence_nestable:
op->op = BYTECODE_OP_LOAD_FIELD_REF_SEQUENCE;
break;
}
}
/* Check if idx is too large for 16-bit offset */
- if (idx > FILTER_BYTECODE_MAX_LEN - 1)
+ if (idx > LTTNG_UST_ABI_FILTER_BYTECODE_MAX_LEN - 1)
return -EINVAL;
/* Get context return type */
field_ref = (struct field_ref *) op->data;
switch (ctx_field->event_field.type.atype) {
case atype_integer:
- case atype_enum:
case atype_enum_nestable:
op->op = BYTECODE_OP_GET_CONTEXT_REF_S64;
break;
/* Sequence and array supported as string */
case atype_string:
- case atype_array:
case atype_array_nestable:
- case atype_sequence:
case atype_sequence_nestable:
op->op = BYTECODE_OP_GET_CONTEXT_REF_STRING;
break;
int link_bytecode(const struct lttng_event_desc *event_desc,
struct lttng_ctx **ctx,
struct lttng_ust_bytecode_node *bytecode,
+ struct cds_list_head *bytecode_runtime_head,
struct cds_list_head *insert_loc)
{
int ret, offset, next_offset;
if (!bytecode)
return 0;
/* Bytecode already linked */
- if (bytecode_is_linked(bytecode, insert_loc))
+ if (bytecode_is_linked(bytecode, bytecode_runtime_head))
return 0;
dbg_printf("Linking...\n");
insert_loc = instance_bytecode_head;
add_within:
dbg_printf("linking bytecode\n");
- ret = link_bytecode(event_desc, ctx, enabler_bc, insert_loc);
+ ret = link_bytecode(event_desc, ctx, enabler_bc, instance_bytecode_head, insert_loc);
if (ret) {
dbg_printf("[lttng filter] warning: cannot link event bytecode\n");
}
}
}
-void lttng_free_event_filter_runtime(struct lttng_event *event)
+void lttng_free_event_recorder_filter_runtime(struct lttng_ust_event_recorder *event_recorder)
{
- free_filter_runtime(&event->filter_bytecode_runtime_head);
+ free_filter_runtime(&event_recorder->parent->filter_bytecode_runtime_head);
}
void lttng_free_event_notifier_filter_runtime(
- struct lttng_event_notifier *event_notifier)
+ struct lttng_ust_event_notifier *event_notifier)
{
- free_filter_runtime(&event_notifier->filter_bytecode_runtime_head);
+ free_filter_runtime(&event_notifier->parent->filter_bytecode_runtime_head);
}