X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=src%2Flttng-bytecode.c;h=4e6e9528fd8d6ec92b1710fd94588fa13cf95290;hb=fdd179d77dfa39bd1dfc40dbf4988520a188df54;hp=664a6aeeb133302ce14864434bbe499ffce41f1f;hpb=0b365677b4b159fa9aa2b98eb19f10f4a762fbe8;p=lttng-modules.git diff --git a/src/lttng-bytecode.c b/src/lttng-bytecode.c index 664a6aee..4e6e9528 100644 --- a/src/lttng-bytecode.c +++ b/src/lttng-bytecode.c @@ -395,7 +395,7 @@ int bytecode_is_linked(struct lttng_bytecode_node *bytecode, * bytecode runtime. */ static -int _lttng_filter_link_bytecode(const struct lttng_event_desc *event_desc, +int link_bytecode(const struct lttng_event_desc *event_desc, struct lttng_ctx *ctx, struct lttng_bytecode_node *bytecode, struct list_head *insert_loc) @@ -452,14 +452,29 @@ int _lttng_filter_link_bytecode(const struct lttng_event_desc *event_desc, if (ret) { goto link_error; } - runtime->p.filter = lttng_bytecode_filter_interpret; + + switch (bytecode->type) { + case LTTNG_BYTECODE_NODE_TYPE_FILTER: + runtime->p.interpreter_funcs.filter = lttng_bytecode_filter_interpret; + break; + default: + WARN_ON(1); + } + runtime->p.link_failed = 0; list_add_rcu(&runtime->p.node, insert_loc); dbg_printk("Linking successful.\n"); return 0; link_error: - runtime->p.filter = lttng_bytecode_filter_interpret_false; + + switch (bytecode->type) { + case LTTNG_BYTECODE_NODE_TYPE_FILTER: + runtime->p.interpreter_funcs.filter = lttng_bytecode_filter_interpret_false; + break; + default: + WARN_ON(1); + } runtime->p.link_failed = 1; list_add_rcu(&runtime->p.node, insert_loc); alloc_error: @@ -472,9 +487,9 @@ void lttng_bytecode_filter_sync_state(struct lttng_bytecode_runtime *runtime) struct lttng_bytecode_node *bc = runtime->bc; if (!bc->enabler->enabled || runtime->link_failed) - runtime->filter = lttng_bytecode_filter_interpret_false; + runtime->interpreter_funcs.filter = lttng_bytecode_filter_interpret_false; else - runtime->filter = lttng_bytecode_filter_interpret; + runtime->interpreter_funcs.filter = lttng_bytecode_filter_interpret; } /* @@ -524,8 +539,7 @@ void lttng_enabler_link_bytecode(const struct lttng_event_desc *event_desc, insert_loc = bytecode_runtime_head; add_within: dbg_printk("linking bytecode\n"); - ret = _lttng_filter_link_bytecode(event_desc, ctx, bc, - insert_loc); + ret = link_bytecode(event_desc, ctx, bc, insert_loc); if (ret) { dbg_printk("[lttng filter] warning: cannot link event bytecode\n"); }