Refactoring: combine event enabler enabler/disable common code
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mon, 8 Nov 2021 16:27:22 +0000 (11:27 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Fri, 12 Jul 2024 15:39:51 +0000 (11:39 -0400)
Introduce lttng_event_enabler_sync().

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: Id7c65f517dec9611f9e3b85355b47441fb082479

src/lib/lttng-ust/events.h
src/lib/lttng-ust/lttng-events.c
src/lib/lttng-ust/lttng-ust-abi.c

index 3fd58aa4600ee034c0f861321aedbae93e874291..ea9851278b35bd2805ea8b644258ff9cdd1ef908 100644 (file)
@@ -41,17 +41,17 @@ void lttng_event_enabler_destroy(struct lttng_event_enabler_common *event_enable
        __attribute__((visibility("hidden")));
 
 /*
- * Enable a `struct lttng_event_enabler` object and all events related to this
+ * Enable a `struct lttng_event_enabler_common` object and all events related to this
  * enabler.
  */
-int lttng_event_enabler_enable(struct lttng_event_enabler_session_common *enabler)
+int lttng_event_enabler_enable(struct lttng_event_enabler_common *enabler)
        __attribute__((visibility("hidden")));
 
 /*
- * Disable a `struct lttng_event_enabler` object and all events related to this
+ * Disable a `struct lttng_event_enabler_common` object and all events related to this
  * enabler.
  */
-int lttng_event_enabler_disable(struct lttng_event_enabler_session_common *enabler)
+int lttng_event_enabler_disable(struct lttng_event_enabler_common *enabler)
        __attribute__((visibility("hidden")));
 
 /*
@@ -121,22 +121,6 @@ struct lttng_event_notifier_enabler *lttng_event_notifier_enabler_create(
                struct lttng_ust_abi_event_notifier *event_notifier_param)
        __attribute__((visibility("hidden")));
 
-/*
- * Enable a `struct lttng_event_notifier_enabler` object and all event
- * notifiers related to this enabler.
- */
-int lttng_event_notifier_enabler_enable(
-               struct lttng_event_notifier_enabler *event_notifier_enabler)
-       __attribute__((visibility("hidden")));
-
-/*
- * Disable a `struct lttng_event_notifier_enabler` object and all event
- * notifiers related to this enabler.
- */
-int lttng_event_notifier_enabler_disable(
-               struct lttng_event_notifier_enabler *event_notifier_enabler)
-       __attribute__((visibility("hidden")));
-
 /*
  * Attach filter bytecode program to `struct lttng_event_notifier_enabler` and
  * all event notifiers related to this enabler.
index 82da68f6f27662cebd4dd82e9d545e7c3857cb1d..25b86fbf7c5945651fe5abb2059af6ee64582eea 100644 (file)
@@ -79,6 +79,8 @@ void lttng_session_sync_event_enablers(struct lttng_ust_session *session);
 static
 void lttng_event_notifier_group_sync_enablers(
                struct lttng_event_notifier_group *event_notifier_group);
+static
+void lttng_event_enabler_sync(struct lttng_event_enabler_common *event_enabler);
 
 bool lttng_ust_validate_event_name(const struct lttng_ust_event_desc *desc)
 {
@@ -1792,19 +1794,17 @@ struct lttng_event_notifier_enabler *lttng_event_notifier_enabler_create(
        return event_notifier_enabler;
 }
 
-int lttng_event_enabler_enable(struct lttng_event_enabler_session_common *event_enabler)
+int lttng_event_enabler_enable(struct lttng_event_enabler_common *event_enabler)
 {
-       event_enabler->parent.enabled = 1;
-       lttng_session_lazy_sync_event_enablers(event_enabler->chan->session);
-
+       event_enabler->enabled = 1;
+       lttng_event_enabler_sync(event_enabler);
        return 0;
 }
 
-int lttng_event_enabler_disable(struct lttng_event_enabler_session_common *event_enabler)
+int lttng_event_enabler_disable(struct lttng_event_enabler_common *event_enabler)
 {
-       event_enabler->parent.enabled = 0;
-       lttng_session_lazy_sync_event_enablers(event_enabler->chan->session);
-
+       event_enabler->enabled = 0;
+       lttng_event_enabler_sync(event_enabler);
        return 0;
 }
 
@@ -1846,24 +1846,6 @@ int lttng_event_enabler_attach_exclusion(struct lttng_event_enabler_session_comm
        return 0;
 }
 
-int lttng_event_notifier_enabler_enable(
-               struct lttng_event_notifier_enabler *event_notifier_enabler)
-{
-       lttng_event_notifier_enabler_as_enabler(event_notifier_enabler)->enabled = 1;
-       lttng_event_notifier_group_sync_enablers(event_notifier_enabler->group);
-
-       return 0;
-}
-
-int lttng_event_notifier_enabler_disable(
-               struct lttng_event_notifier_enabler *event_notifier_enabler)
-{
-       lttng_event_notifier_enabler_as_enabler(event_notifier_enabler)->enabled = 0;
-       lttng_event_notifier_group_sync_enablers(event_notifier_enabler->group);
-
-       return 0;
-}
-
 int lttng_event_notifier_enabler_attach_filter_bytecode(
                struct lttng_event_notifier_enabler *event_notifier_enabler,
                struct lttng_ust_bytecode_node **bytecode)
@@ -2347,6 +2329,30 @@ void lttng_session_lazy_sync_event_enablers(struct lttng_ust_session *session)
        lttng_session_sync_event_enablers(session);
 }
 
+static
+void lttng_event_enabler_sync(struct lttng_event_enabler_common *event_enabler)
+{
+       switch (event_enabler->enabler_type) {
+       case LTTNG_EVENT_ENABLER_TYPE_RECORDER:         /* Fall-through */
+       case LTTNG_EVENT_ENABLER_TYPE_COUNTER:
+       {
+               struct lttng_event_enabler_session_common *event_enabler_session =
+                       caa_container_of(event_enabler, struct lttng_event_enabler_session_common, parent);
+               lttng_session_lazy_sync_event_enablers(event_enabler_session->chan->session);
+               break;
+       }
+       case LTTNG_EVENT_ENABLER_TYPE_NOTIFIER:
+       {
+               struct lttng_event_notifier_enabler *event_notifier_enabler =
+                       caa_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);
+       }
+}
+
 /*
  * Update all sessions with the given app context.
  * Called with ust lock held.
index d327cd915b6c7e5e5897f69435311169feddddb5..390e291ff5acf8a5a7db37be2abbf4e4ec137a98 100644 (file)
@@ -869,9 +869,9 @@ long lttng_event_notifier_enabler_cmd(int objd, unsigned int cmd, unsigned long
                        event_notifier_enabler,
                        (struct lttng_ust_bytecode_node **) arg);
        case LTTNG_UST_ABI_ENABLE:
-               return lttng_event_notifier_enabler_enable(event_notifier_enabler);
+               return lttng_event_enabler_enable(&event_notifier_enabler->parent);
        case LTTNG_UST_ABI_DISABLE:
-               return lttng_event_notifier_enabler_disable(event_notifier_enabler);
+               return lttng_event_enabler_disable(&event_notifier_enabler->parent);
        default:
                return -EINVAL;
        }
@@ -1769,9 +1769,9 @@ long lttng_event_enabler_cmd(int objd, unsigned int cmd, unsigned long arg,
                return lttng_event_enabler_attach_context(enabler,
                                (struct lttng_ust_abi_context *) arg);
        case LTTNG_UST_ABI_ENABLE:
-               return lttng_event_enabler_enable(enabler);
+               return lttng_event_enabler_enable(&enabler->parent);
        case LTTNG_UST_ABI_DISABLE:
-               return lttng_event_enabler_disable(enabler);
+               return lttng_event_enabler_disable(&enabler->parent);
        case LTTNG_UST_ABI_FILTER:
        {
                int ret;
This page took 0.02769 seconds and 4 git commands to generate.