- if (must_update_event_notifiers) {
- const enum lttng_domain_type trigger_domain =
- lttng_trigger_get_underlying_domain_type_restriction(trigger);
-
- session_lock_list();
- switch (trigger_domain) {
- case LTTNG_DOMAIN_KERNEL:
- {
- ret_code = kernel_register_event_notifier(
- trigger, cmd_creds);
- if (ret_code != LTTNG_OK) {
- const enum lttng_error_code notif_thread_unregister_ret =
- notification_thread_command_unregister_trigger(
- notification_thread,
- trigger);
-
- if (notif_thread_unregister_ret != LTTNG_OK) {
- /* Return the original error code. */
- ERR("Failed to unregister trigger from notification thread during error recovery: trigger name = '%s', trigger owner uid = %d, error code = %d",
- trigger_name,
- (int) trigger_owner,
- ret_code);
- }
- }
- break;
- }
- case LTTNG_DOMAIN_UST:
- ust_app_global_update_all_event_notifier_rules();
- break;
- case LTTNG_DOMAIN_NONE:
- abort();
- default:
- {
- /* Agent domains. */
- struct agent *agt = agent_find_by_event_notifier_domain(
- trigger_domain);
-
- if (!agt) {
- agt = agent_create(trigger_domain);
- if (!agt) {
- ret_code = LTTNG_ERR_NOMEM;
- goto end_unlock_session_list;
- }
- agent_add(agt, trigger_agents_ht_by_domain);
- }
-
- ret_code = trigger_agent_enable(trigger, agt);
- if (ret_code != LTTNG_OK) {
- goto end_unlock_session_list;
- }
-
- break;
- }
+ if (lttng_trigger_needs_tracer_notifier(trigger)) {
+ ret_code = synchronize_tracer_notifier_register(notification_thread,
+ trigger, cmd_creds);
+ if (ret_code != LTTNG_OK) {
+ ERR("Error registering tracer notifier: %s",
+ lttng_strerror(-ret_code));
+ goto end;