Move include/ust/ to include/lttng/
[lttng-ust.git] / libust / ltt-probes.c
index 5b3a0cb217c208878d957f114aae2c7cf787b1bb..66ee971cc2d9dac7b1de6e85216ad78097efe4a5 100644 (file)
 #include <string.h>
 #include <errno.h>
 #include <urcu/list.h>
-#include <ust/core.h>
-#include <ust/lttng-events.h>
+#include <lttng/core.h>
+#include <lttng/ust-events.h>
 
+#include "ltt-tracer-core.h"
+
+/*
+ * probe list is protected by ust_lock()/ust_unlock().
+ */
 static CDS_LIST_HEAD(probe_list);
-static DEFINE_MUTEX(probe_mutex);
 
 static
 const struct lttng_event_desc *find_event(const char *name)
@@ -37,7 +41,7 @@ int ltt_probe_register(struct lttng_probe_desc *desc)
        int ret = 0;
        int i;
 
-       pthread_mutex_lock(&probe_mutex);
+       ust_lock();
        /*
         * TODO: This is O(N^2). Turn into a hash table when probe registration
         * overhead becomes an issue.
@@ -49,25 +53,34 @@ int ltt_probe_register(struct lttng_probe_desc *desc)
                }
        }
        cds_list_add(&desc->head, &probe_list);
+
+       /*
+        * fix the events awaiting probe load.
+        */
+       for (i = 0; i < desc->nr_events; i++) {
+               ret = pending_probe_fix_events(&desc->event_desc[i]);
+               assert(!ret);
+       }
 end:
-       pthread_mutex_unlock(&probe_mutex);
+       ust_unlock();
        return ret;
 }
 
 void ltt_probe_unregister(struct lttng_probe_desc *desc)
 {
-       pthread_mutex_lock(&probe_mutex);
+       ust_lock();
        cds_list_del(&desc->head);
-       pthread_mutex_unlock(&probe_mutex);
+       ust_unlock();
 }
 
+/*
+ * called with UST lock held.
+ */
 const struct lttng_event_desc *ltt_event_get(const char *name)
 {
        const struct lttng_event_desc *event;
 
-       pthread_mutex_lock(&probe_mutex);
        event = find_event(name);
-       pthread_mutex_unlock(&probe_mutex);
        if (!event)
                return NULL;
        return event;
This page took 0.025858 seconds and 4 git commands to generate.