From 6048044feeeb7edc3e928aed5d9b1c529fc3fb47 Mon Sep 17 00:00:00 2001 From: Mathieu Desnoyers Date: Mon, 1 Nov 2021 14:16:07 -0400 Subject: [PATCH] Refactoring: combine filter bytecode attach functions Signed-off-by: Mathieu Desnoyers Change-Id: Idd9f50a2e2fc38b16732ada4a33dba4ba14258d8 --- include/lttng/events-internal.h | 5 +--- src/lttng-abi.c | 6 ++--- src/lttng-events.c | 44 ++++++++++++++++----------------- 3 files changed, 24 insertions(+), 31 deletions(-) diff --git a/include/lttng/events-internal.h b/include/lttng/events-internal.h index 19e18815..a9121a1b 100644 --- a/include/lttng/events-internal.h +++ b/include/lttng/events-internal.h @@ -799,10 +799,7 @@ int lttng_event_notifier_enabler_enable( int lttng_event_notifier_enabler_disable( struct lttng_event_notifier_enabler *event_notifier_enabler); -int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_recorder_enabler *event_enabler, - struct lttng_kernel_abi_filter_bytecode __user *bytecode); -int lttng_event_notifier_enabler_attach_filter_bytecode( - struct lttng_event_notifier_enabler *event_notifier_enabler, +int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_enabler_common *event_enabler, struct lttng_kernel_abi_filter_bytecode __user *bytecode); int lttng_event_notifier_enabler_attach_capture_bytecode( struct lttng_event_notifier_enabler *event_notifier_enabler, diff --git a/src/lttng-abi.c b/src/lttng-abi.c index 2fec4237..6a1954d3 100644 --- a/src/lttng-abi.c +++ b/src/lttng-abi.c @@ -1991,8 +1991,7 @@ long lttng_event_notifier_enabler_ioctl(struct file *file, unsigned int cmd, uns case LTTNG_KERNEL_ABI_DISABLE: return lttng_event_notifier_enabler_disable(event_notifier_enabler); case LTTNG_KERNEL_ABI_FILTER: - return lttng_event_notifier_enabler_attach_filter_bytecode( - event_notifier_enabler, + return lttng_event_enabler_attach_filter_bytecode(&event_notifier_enabler->parent, (struct lttng_kernel_abi_filter_bytecode __user *) arg); case LTTNG_KERNEL_ABI_CAPTURE: return lttng_event_notifier_enabler_attach_capture_bytecode( @@ -2720,8 +2719,7 @@ long lttng_event_recorder_enabler_ioctl(struct file *file, unsigned int cmd, uns case LTTNG_KERNEL_ABI_DISABLE: return lttng_event_enabler_disable(event_enabler); case LTTNG_KERNEL_ABI_FILTER: - return lttng_event_enabler_attach_filter_bytecode( - event_enabler, + return lttng_event_enabler_attach_filter_bytecode(&event_enabler->parent, (struct lttng_kernel_abi_filter_bytecode __user *) arg); case LTTNG_KERNEL_ABI_ADD_CALLSITE: return -EINVAL; diff --git a/src/lttng-events.c b/src/lttng-events.c index 5bd357fc..ffec2b85 100644 --- a/src/lttng-events.c +++ b/src/lttng-events.c @@ -2554,16 +2554,33 @@ error_free: return ret; } -int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_recorder_enabler *event_enabler, +int lttng_event_enabler_attach_filter_bytecode(struct lttng_event_enabler_common *event_enabler, struct lttng_kernel_abi_filter_bytecode __user *bytecode) { int ret; - ret = lttng_enabler_attach_filter_bytecode( - lttng_event_recorder_enabler_as_enabler(event_enabler), bytecode); + ret = lttng_enabler_attach_filter_bytecode(event_enabler, bytecode); if (ret) goto error; - lttng_session_lazy_sync_event_enablers(event_enabler->chan->parent.session); + switch (event_enabler->enabler_type) { + case LTTNG_EVENT_ENABLER_TYPE_RECORDER: + { + struct lttng_event_recorder_enabler *event_recorder_enabler = + container_of(event_enabler, struct lttng_event_recorder_enabler, parent); + lttng_session_lazy_sync_event_enablers(event_recorder_enabler->chan->parent.session); + break; + } + case LTTNG_EVENT_ENABLER_TYPE_NOTIFIER: + { + struct lttng_event_notifier_enabler *event_notifier_enabler = + container_of(event_enabler, struct lttng_event_notifier_enabler, parent); + lttng_event_notifier_group_sync_enablers(event_notifier_enabler->group); + break; + } + default: + WARN_ON_ONCE(1); + return -ENOSYS; + } return 0; error: @@ -2658,25 +2675,6 @@ int lttng_event_notifier_enabler_disable( return 0; } -int lttng_event_notifier_enabler_attach_filter_bytecode( - struct lttng_event_notifier_enabler *event_notifier_enabler, - struct lttng_kernel_abi_filter_bytecode __user *bytecode) -{ - int ret; - - ret = lttng_enabler_attach_filter_bytecode( - lttng_event_notifier_enabler_as_enabler(event_notifier_enabler), - bytecode); - if (ret) - goto error; - - lttng_event_notifier_group_sync_enablers(event_notifier_enabler->group); - return 0; - -error: - return ret; -} - int lttng_event_notifier_enabler_attach_capture_bytecode( struct lttng_event_notifier_enabler *event_notifier_enabler, struct lttng_kernel_abi_capture_bytecode __user *bytecode) -- 2.34.1