X-Git-Url: https://git.lttng.org/?a=blobdiff_plain;f=libust%2Fmarker.c;h=8e2a398ef23f915b6e7e8cf7e76cba5cd9c0d2a8;hb=c2fefccd1f508ef9694697ed971693c2266af3f1;hp=d4514f11a4f5faf4e34291c0839b4300c421c8f0;hpb=75667d04f4c255687def1876cf15baf3bbd1ffc5;p=ust.git diff --git a/libust/marker.c b/libust/marker.c index d4514f1..8e2a398 100644 --- a/libust/marker.c +++ b/libust/marker.c @@ -33,18 +33,19 @@ #define _LGPL_SOURCE #include -#include "kernelcompat.h" +#include -#include "marker.h" +#include #include "usterr.h" #include "channels.h" #include "tracercore.h" #include "tracer.h" +__thread long ust_reg_stack[500]; +volatile __thread long *ust_reg_stack_ptr = (long *) 0; + extern struct marker __start___markers[] __attribute__((visibility("hidden"))); extern struct marker __stop___markers[] __attribute__((visibility("hidden"))); -extern struct marker_addr __start___marker_addr[] __attribute__((visibility("hidden"))); -extern struct marker_addr __stop___marker_addr[] __attribute__((visibility("hidden"))); /* Set to 1 to enable marker debug output */ static const int marker_debug; @@ -666,6 +667,24 @@ static void disable_marker(struct marker *elem) */ } +/* + * is_marker_enabled - Check if a marker is enabled + * @channel: channel name + * @name: marker name + * + * Returns 1 if the marker is enabled, 0 if disabled. + */ +int is_marker_enabled(const char *channel, const char *name) +{ + struct marker_entry *entry; + + mutex_lock(&markers_mutex); + entry = get_marker(channel, name); + mutex_unlock(&markers_mutex); + + return entry && !!entry->refcount; +} + /** * marker_update_probe_range - Update a probe range * @begin: beginning of the range @@ -1498,7 +1517,7 @@ static void new_markers(struct marker *start, struct marker *end) } } -int marker_register_lib(struct marker *markers_start, struct marker_addr *marker_addr_start, int markers_count) +int marker_register_lib(struct marker *markers_start, int markers_count) { struct lib *pl; struct marker_addr *addr; @@ -1506,14 +1525,8 @@ int marker_register_lib(struct marker *markers_start, struct marker_addr *marker pl = (struct lib *) malloc(sizeof(struct lib)); pl->markers_start = markers_start; - pl->markers_addr_start = marker_addr_start; pl->markers_count = markers_count; - lock_markers(); - for(addr = marker_addr_start; addr < marker_addr_start + markers_count; addr++) - addr->marker->location = addr->addr; - unlock_markers(); - /* FIXME: maybe protect this with its own mutex? */ lock_markers(); list_add(&pl->list, &libs); @@ -1542,7 +1555,7 @@ static int initialized = 0; void __attribute__((constructor)) init_markers(void) { if(!initialized) { - marker_register_lib(__start___markers, __start___marker_addr, (((long)__stop___markers)-((long)__start___markers))/sizeof(struct marker)); + marker_register_lib(__start___markers, (((long)__stop___markers)-((long)__start___markers))/sizeof(struct marker)); //DBG("markers_start: %p, markers_stop: %p\n", __start___markers, __stop___markers); initialized = 1; }