add libtracing Makefile.am
[ust.git] / libmarkers / marker.c
index e1b62c7f64d908269a399ecf9dfd11ba00894252..ab0fc775adc422ba651a06e4430cfae1d589e19d 100644 (file)
@@ -726,7 +726,7 @@ static void marker_update_probes(void)
 //ust//        tracepoint_probe_update_all();
        /* Update immediate values */
        core_imv_update();
-//ust//        module_imv_update();
+//ust//        module_imv_update(); /* FIXME: need to port for libs? */
        marker_update_processes();
 }
 
@@ -1471,6 +1471,23 @@ void lib_update_markers(void)
 //ust//        mutex_unlock(&module_mutex);
 }
 
+static void (*new_marker_cb)(struct marker *) = NULL;
+
+void marker_set_new_marker_cb(void (*cb)(struct marker *))
+{
+       new_marker_cb = cb;
+}
+
+static void new_markers(struct marker *start, struct marker *end)
+{
+       if(new_marker_cb) {
+               struct marker *m;
+               for(m=start; m < end; m++) {
+                       new_marker_cb(m);
+               }
+       }
+}
+
 int marker_register_lib(struct marker *markers_start, int markers_count)
 {
        struct lib *pl;
@@ -1480,16 +1497,29 @@ int marker_register_lib(struct marker *markers_start, int markers_count)
        pl->markers_start = markers_start;
        pl->markers_count = markers_count;
 
+       /* FIXME: maybe protect this with its own mutex? */
+       lock_markers();
        list_add(&pl->list, &libs);
+       unlock_markers();
+
+       new_markers(markers_start, markers_start + markers_count);
 
        /* FIXME: update just the loaded lib */
        lib_update_markers();
 
-       printf("just registered a markers section from %p and having %d markers\n", markers_start, markers_count);
+       DBG("just registered a markers section from %p and having %d markers", markers_start, markers_count);
        
        return 0;
 }
 
+int marker_unregister_lib(struct marker *markers_start, int markers_count)
+{
+       /*FIXME: implement; but before implementing, marker_register_lib must
+          have appropriate locking. */
+
+       return 0;
+}
+
 static int initialized = 0;
 
 void __attribute__((constructor)) init_markers(void)
This page took 0.022958 seconds and 4 git commands to generate.