X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=libust%2Ftracepoint.c;h=20c4767c7e0dc2c877d38dfad53ab049502302e4;hb=24b6668c651f21d415b4f3a4533c7c6c6692aa73;hp=584b3ffe1af50ffdb01f383ed9ba6ace0fb267bc;hpb=2f03197d3d05b272f82ed261a0a7b2bbb2f66ab0;p=ust.git diff --git a/libust/tracepoint.c b/libust/tracepoint.c index 584b3ff..20c4767 100644 --- a/libust/tracepoint.c +++ b/libust/tracepoint.c @@ -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; }