markers/tracepoints: implement library unregistration
[ust.git] / libust / tracepoint.c
index 584b3ffe1af50ffdb01f383ed9ba6ace0fb267bc..20c4767c7e0dc2c877d38dfad53ab049502302e4 100644 (file)
@@ -678,10 +678,22 @@ int tracepoint_register_lib(struct tracepoint *tracepoints_start, int tracepoint
        return 0;
 }
 
-int tracepoint_unregister_lib(struct tracepoint *tracepoints_start, int tracepoints_count)
+int tracepoint_unregister_lib(struct tracepoint *tracepoints_start)
 {
-       /*FIXME: implement; but before implementing, tracepoint_register_lib must
-          have appropriate locking. */
+       struct tracepoint_lib *lib;
+
+       mutex_lock(&tracepoints_mutex);
+
+       list_for_each_entry(lib, &libs, list) {
+               if(lib->tracepoints_start == tracepoints_start) {
+                       struct tracepoint_lib *lib2free = lib;
+                       list_del(&lib->list);
+                       free(lib2free);
+                       break;
+               }
+       }
+
+       mutex_unlock(&tracepoints_mutex);
 
        return 0;
 }
This page took 0.023426 seconds and 4 git commands to generate.