X-Git-Url: http://git.lttng.org./?a=blobdiff_plain;ds=sidebyside;f=libmarkers%2Fmarker.h;h=7c3d8c565a512d082df3fc304882747eab97930e;hb=e4621c7f086a79cd5a454f3d7ff42b5adf244c1a;hp=5fdd66ff45feef3f5c1d2b3126304d630524b6ee;hpb=59b161cdfcaad93fee295add37090a3d991e7aa8;p=lttng-ust.git diff --git a/libmarkers/marker.h b/libmarkers/marker.h index 5fdd66ff..7c3d8c56 100644 --- a/libmarkers/marker.h +++ b/libmarkers/marker.h @@ -1,6 +1,3 @@ -#ifndef _LINUX_MARKER_H -#define _LINUX_MARKER_H - /* * Code markup for dynamic and static tracing. * @@ -13,12 +10,16 @@ * See the file COPYING for more details. */ +#ifndef _LINUX_MARKER_H +#define _LINUX_MARKER_H + #include //ust// #include #include "immediate.h" //ust// #include #include "kernelcompat.h" #include "compiler.h" +#include "list.h" //ust// struct module; //ust// struct task_struct; @@ -251,7 +252,8 @@ extern void *marker_get_private_data(const char *channel, const char *name, #define marker_synchronize_unregister() synchronize_sched() struct marker_iter { - struct module *module; +//ust// struct module *module; + struct lib *lib; struct marker *marker; }; @@ -273,4 +275,24 @@ extern int is_marker_enabled(const char *channel, const char *name); //ust// } //ust// #endif + +struct lib { + struct marker *markers_start; + int markers_count; + struct list_head list; +}; + +int marker_register_lib(struct marker *markers_start, int markers_count); + +#define MARKER_LIB \ +extern struct marker __start___markers[] __attribute__((visibility("hidden"))); \ +extern struct marker __stop___markers[] __attribute__((visibility("hidden"))); \ + \ +static void __attribute__((constructor)) __markers__init(void) \ +{ \ + marker_register_lib(__start___markers, (((long)__stop___markers)-((long)__start___markers))/sizeof(struct marker));\ +} + +void marker_set_new_marker_cb(void (*cb)(struct marker *)); + #endif