+struct lttng_kernel_event_common *_lttng_kernel_event_create(struct lttng_event_enabler_common *event_enabler,
+ const struct lttng_kernel_event_desc *event_desc)
+{
+ 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);
+ struct lttng_kernel_event_recorder *event_recorder;
+
+ event_recorder = _lttng_kernel_event_recorder_create(event_recorder_enabler, event_desc);
+ if (!event_recorder)
+ return NULL;
+ return &event_recorder->parent;
+ }
+ case LTTNG_EVENT_ENABLER_TYPE_NOTIFIER:
+ {
+ struct lttng_event_notifier_enabler *event_notifier_enabler =
+ container_of(event_enabler, struct lttng_event_notifier_enabler, parent);
+ struct lttng_kernel_event_notifier *event_notifier;
+
+ event_notifier = _lttng_kernel_event_notifier_create(event_notifier_enabler, event_desc);
+ if (!event_notifier)
+ return NULL;
+ return &event_notifier->parent;
+ }
+ default:
+ return NULL;
+ }
+}
+
+struct lttng_kernel_event_common *lttng_kernel_event_create(struct lttng_event_enabler_common *event_enabler,
+ const struct lttng_kernel_event_desc *event_desc)
+{
+ struct lttng_kernel_event_common *event;
+
+ mutex_lock(&sessions_mutex);
+ event = _lttng_kernel_event_create(event_enabler, event_desc);
+ mutex_unlock(&sessions_mutex);
+ return event;
+}
+
+
+