- if (hlist_empty(&syscall_table->unknown_syscall_dispatch)) {
- const struct lttng_kernel_event_desc *desc =
- &__event_desc___syscall_entry_unknown;
- struct lttng_kernel_event_common *event;
- struct lttng_event_recorder_enabler *event_enabler;
-
- memset(&ev, 0, sizeof(ev));
- strncpy(ev.name, desc->event_name, LTTNG_KERNEL_ABI_SYM_NAME_LEN);
- ev.name[LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1] = '\0';
- ev.instrumentation = LTTNG_KERNEL_ABI_SYSCALL;
- ev.u.syscall.entryexit = LTTNG_KERNEL_ABI_SYSCALL_ENTRY;
- ev.u.syscall.abi = LTTNG_KERNEL_ABI_SYSCALL_ABI_NATIVE;
- event_enabler = lttng_event_recorder_enabler_create(LTTNG_ENABLER_FORMAT_NAME, &ev, chan);
- if (!event_enabler) {
- return -ENOMEM;
- }
- event = _lttng_kernel_event_create(&event_enabler->parent, desc);
- lttng_event_enabler_destroy(&event_enabler->parent);
- WARN_ON_ONCE(!event);
- if (IS_ERR(event)) {
- return PTR_ERR(event);
- }
- hlist_add_head(&event->priv->u.syscall.node, &syscall_table->unknown_syscall_dispatch);
- }
-
- if (hlist_empty(&syscall_table->compat_unknown_syscall_dispatch)) {
- const struct lttng_kernel_event_desc *desc =
- &__event_desc___compat_syscall_entry_unknown;
- struct lttng_kernel_event_common *event;
- struct lttng_event_recorder_enabler *event_enabler;
-
- memset(&ev, 0, sizeof(ev));
- strncpy(ev.name, desc->event_name, LTTNG_KERNEL_ABI_SYM_NAME_LEN);
- ev.name[LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1] = '\0';
- ev.instrumentation = LTTNG_KERNEL_ABI_SYSCALL;
- ev.u.syscall.entryexit = LTTNG_KERNEL_ABI_SYSCALL_ENTRY;
- ev.u.syscall.abi = LTTNG_KERNEL_ABI_SYSCALL_ABI_COMPAT;
- event_enabler = lttng_event_recorder_enabler_create(LTTNG_ENABLER_FORMAT_NAME, &ev, chan);
- if (!event_enabler) {
- return -ENOMEM;
- }
- event = _lttng_kernel_event_create(&event_enabler->parent, desc);
- WARN_ON_ONCE(!event);
- lttng_event_enabler_destroy(&event_enabler->parent);
- if (IS_ERR(event)) {
- return PTR_ERR(event);
- }
- hlist_add_head(&event->priv->u.syscall.node, &syscall_table->compat_unknown_syscall_dispatch);
- }
-
- if (hlist_empty(&syscall_table->compat_unknown_syscall_exit_dispatch)) {
- const struct lttng_kernel_event_desc *desc =
- &__event_desc___compat_syscall_exit_unknown;
- struct lttng_kernel_event_common *event;
- struct lttng_event_recorder_enabler *event_enabler;
-
- memset(&ev, 0, sizeof(ev));
- strncpy(ev.name, desc->event_name, LTTNG_KERNEL_ABI_SYM_NAME_LEN);
- ev.name[LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1] = '\0';
- ev.instrumentation = LTTNG_KERNEL_ABI_SYSCALL;
- ev.u.syscall.entryexit = LTTNG_KERNEL_ABI_SYSCALL_EXIT;
- ev.u.syscall.abi = LTTNG_KERNEL_ABI_SYSCALL_ABI_COMPAT;
- event_enabler = lttng_event_recorder_enabler_create(LTTNG_ENABLER_FORMAT_NAME, &ev, chan);
- if (!event_enabler) {
- return -ENOMEM;
- }
- event = _lttng_kernel_event_create(&event_enabler->parent, desc);
- WARN_ON_ONCE(!event);
- lttng_event_enabler_destroy(&event_enabler->parent);
- if (IS_ERR(event)) {
- return PTR_ERR(event);
- }
- hlist_add_head(&event->priv->u.syscall.node, &syscall_table->compat_unknown_syscall_exit_dispatch);
- }
-
- if (hlist_empty(&syscall_table->unknown_syscall_exit_dispatch)) {
- const struct lttng_kernel_event_desc *desc =
- &__event_desc___syscall_exit_unknown;
- struct lttng_kernel_event_common *event;
- struct lttng_event_recorder_enabler *event_enabler;
-
- memset(&ev, 0, sizeof(ev));
- strncpy(ev.name, desc->event_name, LTTNG_KERNEL_ABI_SYM_NAME_LEN);
- ev.name[LTTNG_KERNEL_ABI_SYM_NAME_LEN - 1] = '\0';
- ev.instrumentation = LTTNG_KERNEL_ABI_SYSCALL;
- ev.u.syscall.entryexit = LTTNG_KERNEL_ABI_SYSCALL_EXIT;
- ev.u.syscall.abi = LTTNG_KERNEL_ABI_SYSCALL_ABI_NATIVE;
- event_enabler = lttng_event_recorder_enabler_create(LTTNG_ENABLER_FORMAT_NAME, &ev, chan);
- if (!event_enabler) {
- return -ENOMEM;
- }
- event = _lttng_kernel_event_create(&event_enabler->parent, desc);
- WARN_ON_ONCE(!event);
- lttng_event_enabler_destroy(&event_enabler->parent);
- if (IS_ERR(event)) {
- return PTR_ERR(event);
- }
- hlist_add_head(&event->priv->u.syscall.node, &syscall_table->unknown_syscall_exit_dispatch);
- }
-