X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Flttng-ctl.c;h=6238d9a00749865e23e390c2ac87b9e8799a09af;hp=c9fb293be1ed74411d20238ec7f94663a613041e;hb=025faf73cdb6942ebf437dc4c4f6631f0134b128;hpb=18eace3ba4aeaa6b869c8ad9ec1273381b4cbdee;ds=sidebyside diff --git a/src/lib/lttng-ctl/lttng-ctl.c b/src/lib/lttng-ctl/lttng-ctl.c index c9fb293be..6238d9a00 100644 --- a/src/lib/lttng-ctl/lttng-ctl.c +++ b/src/lib/lttng-ctl/lttng-ctl.c @@ -827,12 +827,12 @@ int lttng_enable_event(struct lttng_handle *handle, } /* - * Set filter for an event + * Create or enable an event with a filter expression. * * Return negative error value on error. * Return size of returned session payload data if OK. */ -int lttng_set_event_filter(struct lttng_handle *handle, +int lttng_enable_event_with_filter(struct lttng_handle *handle, struct lttng_event *event, const char *channel_name, const char *filter_expression) { @@ -842,14 +842,10 @@ int lttng_set_event_filter(struct lttng_handle *handle, int ret = 0; /* Safety check. */ - if (handle == NULL) { + if (handle == NULL || !filter_expression) { return -LTTNG_ERR_INVALID; } - if (!filter_expression) { - return 0; - } - /* * casting const to non-const, as the underlying function will * use it in read-only mode. @@ -921,17 +917,17 @@ int lttng_set_event_filter(struct lttng_handle *handle, memset(&lsm, 0, sizeof(lsm)); - lsm.cmd_type = LTTNG_SET_FILTER; + lsm.cmd_type = LTTNG_ENABLE_EVENT_WITH_FILTER; /* Copy channel name */ - copy_string(lsm.u.filter.channel_name, channel_name, - sizeof(lsm.u.filter.channel_name)); + copy_string(lsm.u.enable.channel_name, channel_name, + sizeof(lsm.u.enable.channel_name)); /* Copy event name */ if (event) { memcpy(&lsm.u.enable.event, event, sizeof(lsm.u.enable.event)); } - lsm.u.filter.bytecode_len = sizeof(ctx->bytecode->b) + lsm.u.enable.bytecode_len = sizeof(ctx->bytecode->b) + bytecode_get_len(&ctx->bytecode->b); copy_lttng_domain(&lsm.domain, &handle->domain); @@ -940,7 +936,7 @@ int lttng_set_event_filter(struct lttng_handle *handle, sizeof(lsm.session.name)); ret = ask_sessiond_varlen(&lsm, &ctx->bytecode->b, - lsm.u.filter.bytecode_len, NULL); + lsm.u.enable.bytecode_len, NULL); filter_bytecode_free(ctx); filter_ir_free(ctx);