X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=probes%2Flttng-events.h;h=a739bbc8e20dce85b35fdaa3476ab0f591bc220e;hb=85a9ca7ff30ef892e5865c5541fd11f6c6de33a3;hp=dacce7bd287f0413da50861ac71de3a396e8d951;hpb=f62b389ebaba6abc93afb2cf9fbdf2fe0b632077;p=lttng-modules.git diff --git a/probes/lttng-events.h b/probes/lttng-events.h index dacce7bd..a739bbc8 100644 --- a/probes/lttng-events.h +++ b/probes/lttng-events.h @@ -1,23 +1,11 @@ -#include -#include #include +#include "lttng.h" +#include "lttng-types.h" #include "../wrapper/vmalloc.h" /* for wrapper_vmalloc_sync_all() */ #include "../wrapper/ringbuffer/frontend_types.h" #include "../ltt-events.h" #include "../ltt-tracer-core.h" -struct lttng_event_field { - const char *name; - const struct lttng_type type; -}; - -struct lttng_event_desc { - const struct lttng_event_field *fields; - const char *name; - void *probe_callback; - unsigned int nr_fields; -}; - /* * Macro declarations used for all stages. */ @@ -71,7 +59,7 @@ struct lttng_event_desc { #undef DEFINE_EVENT #define DEFINE_EVENT(_template, _name, _proto, _args) \ -void trace_##_name(proto); +void trace_##_name(_proto); #include TRACE_INCLUDE(TRACE_INCLUDE_FILE) @@ -185,6 +173,25 @@ static const struct lttng_event_desc TP_ID(__event_desc___, TRACE_SYSTEM)[] = { #undef TP_ID1 #undef TP_ID + +/* + * Stage 2.1 of the trace events. + * + * Create a toplevel descriptor for the whole probe. + */ + +#define TP_ID1(_token, _system) _token##_system +#define TP_ID(_token, _system) TP_ID1(_token, _system) + +/* non-const because list head will be modified when registered. */ +static struct lttng_probe_desc TP_ID(__probe_desc___, TRACE_SYSTEM) = { + .event_desc = TP_ID(__event_desc___, TRACE_SYSTEM), + .nr_events = ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)), +}; + +#undef TP_ID1 +#undef TP_ID + /* * Stage 3 of the trace events. * @@ -593,46 +600,20 @@ static void __event_probe__##_name(void *__data, _proto) \ static int TP_ID(__lttng_events_init__, TRACE_SYSTEM)(void) { int ret; - int i; wrapper_vmalloc_sync_all(); ret = TP_ID(__lttng_types_init__, TRACE_SYSTEM)(); if (ret) return ret; - for (i = 0; i < ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)); i++) { - const struct lttng_event_desc *event_desc; - - event_desc = &TP_ID(__event_desc___, TRACE_SYSTEM)[i]; - ret = ltt_probe_register(event_desc->name, - event_desc->probe_callback); - if (ret) - goto error; - } - return 0; - -error: - for (i--; i >= 0; i--) { - const struct lttng_event_desc *event_desc; - - event_desc = &TP_ID(__event_desc___, TRACE_SYSTEM)[i]; - ltt_probe_unregister(event_desc->name); - } - return ret; + return ltt_probe_register(&TP_ID(__probe_desc___, TRACE_SYSTEM)); } module_init_eval(__lttng_events_init__, TRACE_SYSTEM); static void TP_ID(__lttng_events_exit__, TRACE_SYSTEM)(void) { - int i; - - for (i = 0; i < ARRAY_SIZE(TP_ID(__event_desc___, TRACE_SYSTEM)); i++) { - const struct lttng_event_desc *event_desc; - - event_desc = &TP_ID(__event_desc___, TRACE_SYSTEM)[i]; - ltt_probe_unregister(event_desc->name); - } TP_ID(__lttng_types_exit__, TRACE_SYSTEM)(); + ltt_probe_unregister(&TP_ID(__probe_desc___, TRACE_SYSTEM)); } module_exit_eval(__lttng_events_exit__, TRACE_SYSTEM);