Fix: many-events registration/unregistration speed
[lttng-ust.git] / liblttng-ust / lttng-events.c
index 373995d08e61135bdd71b7991ba10749132d9116..64f70f92bd9701ff15936d9fb6ec84176d389187 100644 (file)
@@ -184,7 +184,7 @@ void register_event(struct lttng_event *event)
 
        assert(event->registered == 0);
        desc = event->desc;
-       ret = __tracepoint_probe_register(desc->name,
+       ret = __tracepoint_probe_register_queue_release(desc->name,
                        desc->probe_callback,
                        event, desc->signature);
        WARN_ON_ONCE(ret);
@@ -200,7 +200,7 @@ void unregister_event(struct lttng_event *event)
 
        assert(event->registered == 1);
        desc = event->desc;
-       ret = __tracepoint_probe_unregister(desc->name,
+       ret = __tracepoint_probe_unregister_queue_release(desc->name,
                        desc->probe_callback,
                        event);
        WARN_ON_ONCE(ret);
@@ -230,6 +230,7 @@ void lttng_session_destroy(struct lttng_session *session)
                _lttng_event_unregister(event);
        }
        synchronize_trace();    /* Wait for in-flight events to complete */
+       __tracepoint_probe_prune_release_queue();
        cds_list_for_each_entry_safe(enabler, tmpenabler,
                        &session->enablers_head, node)
                lttng_enabler_destroy(enabler);
@@ -1125,6 +1126,7 @@ void lttng_session_sync_enablers(struct lttng_session *session)
                        lttng_filter_sync_state(runtime);
                }
        }
+       __tracepoint_probe_prune_release_queue();
 }
 
 /*
This page took 0.022842 seconds and 4 git commands to generate.