return -EINVAL;
/* Check if field offset is too large for 16-bit offset */
- if (field_offset > LTTNG_KERNEL_FILTER_BYTECODE_MAX_LEN - 1)
+ if (field_offset > LTTNG_KERNEL_ABI_FILTER_BYTECODE_MAX_LEN - 1)
return -EINVAL;
/* set type */
return -ENOENT;
/* Check if idx is too large for 16-bit offset */
- if (idx > LTTNG_KERNEL_FILTER_BYTECODE_MAX_LEN - 1)
+ if (idx > LTTNG_KERNEL_ABI_FILTER_BYTECODE_MAX_LEN - 1)
return -EINVAL;
/* Get context return type */
}
static
-int bytecode_is_linked(struct lttng_bytecode_node *bytecode,
+int bytecode_is_linked(struct lttng_kernel_bytecode_node *bytecode,
struct list_head *bytecode_runtime_head)
{
- struct lttng_bytecode_runtime *bc_runtime;
+ struct lttng_kernel_bytecode_runtime *bc_runtime;
list_for_each_entry(bc_runtime, bytecode_runtime_head, node) {
if (bc_runtime->bc == bytecode)
static
int link_bytecode(const struct lttng_kernel_event_desc *event_desc,
struct lttng_kernel_ctx *ctx,
- struct lttng_bytecode_node *bytecode,
+ struct lttng_kernel_bytecode_node *bytecode,
struct list_head *bytecode_runtime_head,
struct list_head *insert_loc)
{
ret = -ENOMEM;
goto alloc_error;
}
+ runtime->p.type = bytecode->type;
runtime->p.bc = bytecode;
runtime->p.ctx = ctx;
runtime->len = bytecode->bc.reloc_offset;
if (ret) {
goto link_error;
}
-
- switch (bytecode->type) {
- case LTTNG_BYTECODE_NODE_TYPE_FILTER:
- runtime->p.interpreter_funcs.filter = lttng_bytecode_filter_interpret;
- break;
- case LTTNG_BYTECODE_NODE_TYPE_CAPTURE:
- runtime->p.interpreter_funcs.capture = lttng_bytecode_capture_interpret_false;
- break;
- default:
- WARN_ON(1);
- }
-
+ runtime->p.interpreter_func = lttng_bytecode_interpret;
runtime->p.link_failed = 0;
list_add_rcu(&runtime->p.node, insert_loc);
dbg_printk("Linking successful.\n");
link_error:
- switch (bytecode->type) {
- case LTTNG_BYTECODE_NODE_TYPE_FILTER:
- runtime->p.interpreter_funcs.filter = lttng_bytecode_filter_interpret_false;
- break;
- case LTTNG_BYTECODE_NODE_TYPE_CAPTURE:
- runtime->p.interpreter_funcs.capture = lttng_bytecode_capture_interpret_false;
- break;
- default:
- WARN_ON(1);
- }
+ runtime->p.interpreter_func = lttng_bytecode_interpret_error;
runtime->p.link_failed = 1;
list_add_rcu(&runtime->p.node, insert_loc);
alloc_error:
return ret;
}
-void lttng_bytecode_filter_sync_state(struct lttng_bytecode_runtime *runtime)
+void lttng_bytecode_sync_state(struct lttng_kernel_bytecode_runtime *runtime)
{
- struct lttng_bytecode_node *bc = runtime->bc;
+ struct lttng_kernel_bytecode_node *bc = runtime->bc;
if (!bc->enabler->enabled || runtime->link_failed)
- runtime->interpreter_funcs.filter = lttng_bytecode_filter_interpret_false;
+ runtime->interpreter_func = lttng_bytecode_interpret_error;
else
- runtime->interpreter_funcs.filter = lttng_bytecode_filter_interpret;
-}
-
-void lttng_bytecode_capture_sync_state(struct lttng_bytecode_runtime *runtime)
-{
- struct lttng_bytecode_node *bc = runtime->bc;
-
- if (!bc->enabler->enabled || runtime->link_failed)
- runtime->interpreter_funcs.capture = lttng_bytecode_capture_interpret_false;
- else
- runtime->interpreter_funcs.capture = lttng_bytecode_capture_interpret;
+ runtime->interpreter_func = lttng_bytecode_interpret;
}
/*
struct list_head *instance_bytecode_head,
struct list_head *enabler_bytecode_head)
{
- struct lttng_bytecode_node *enabler_bc;
- struct lttng_bytecode_runtime *runtime;
+ struct lttng_kernel_bytecode_node *enabler_bc;
+ struct lttng_kernel_bytecode_runtime *runtime;
WARN_ON_ONCE(!event_desc);
* We own the filter_bytecode if we return success.
*/
int lttng_filter_enabler_attach_bytecode(struct lttng_enabler *enabler,
- struct lttng_bytecode_node *filter_bytecode)
+ struct lttng_kernel_bytecode_node *filter_bytecode)
{
list_add(&filter_bytecode->node, &enabler->filter_bytecode_head);
return 0;
void lttng_free_enabler_filter_bytecode(struct lttng_enabler *enabler)
{
- struct lttng_bytecode_node *filter_bytecode, *tmp;
+ struct lttng_kernel_bytecode_node *filter_bytecode, *tmp;
list_for_each_entry_safe(filter_bytecode, tmp,
&enabler->filter_bytecode_head, node) {
}
}
-void lttng_free_event_filter_runtime(struct lttng_event *event)
-{
- struct bytecode_runtime *runtime, *tmp;
-
- list_for_each_entry_safe(runtime, tmp,
- &event->filter_bytecode_runtime_head, p.node) {
- kfree(runtime->data);
- kfree(runtime);
- }
-}
-
-void lttng_free_event_notifier_filter_runtime(struct lttng_event_notifier *event_notifier)
+void lttng_free_event_filter_runtime(struct lttng_kernel_event_common *event)
{
struct bytecode_runtime *runtime, *tmp;
list_for_each_entry_safe(runtime, tmp,
- &event_notifier->filter_bytecode_runtime_head, p.node) {
+ &event->priv->filter_bytecode_runtime_head, p.node) {
kfree(runtime->data);
kfree(runtime);
}