X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;f=libmarkers%2Fmarker.c;h=ab0fc775adc422ba651a06e4430cfae1d589e19d;hb=0ce2af7f6372336d520847b4745da781344ba743;hp=e1b62c7f64d908269a399ecf9dfd11ba00894252;hpb=09938485689f3482ec845e52d5bf5e78c1093e27;p=lttng-ust.git diff --git a/libmarkers/marker.c b/libmarkers/marker.c index e1b62c7f..ab0fc775 100644 --- a/libmarkers/marker.c +++ b/libmarkers/marker.c @@ -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)