Use -EIO as tsc value for nmi error (and drop event)
[lttng-modules.git] / probes / lttng-events.h
index 38c61cd85dfb8ffd2057c756f8d9597be7658ac2..a739bbc8e20dce85b35fdaa3476ab0f591bc220e 100644 (file)
@@ -1,23 +1,11 @@
-#include <lttng.h>
-#include <lttng-types.h>
 #include <linux/debugfs.h>
-#include <linux/vmalloc.h>     /* for vmalloc_sync_all() */
+#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.
  */
@@ -53,6 +41,28 @@ struct lttng_event_desc {
        TRACE_EVENT(name, PARAMS(proto), PARAMS(args),                  \
                PARAMS(tstruct), PARAMS(assign), PARAMS(print))         \
 
+/*
+ * Stage 0.1 of the trace events.
+ *
+ * Create dummy trace calls for each events, verifying that the LTTng module
+ * TRACE_EVENT headers match the kernel arguments. Will be optimized out by the
+ * compiler.
+ */
+
+#include "lttng-events-reset.h"        /* Reset all macros within TRACE_EVENT */
+
+#undef TP_PROTO
+#define TP_PROTO(args...) args
+
+#undef TP_ARGS
+#define TP_ARGS(args...) args
+
+#undef DEFINE_EVENT
+#define DEFINE_EVENT(_template, _name, _proto, _args)                  \
+void trace_##_name(_proto);
+
+#include TRACE_INCLUDE(TRACE_INCLUDE_FILE)
+
 /*
  * Stage 1 of the trace events.
  *
@@ -163,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.
  *
@@ -571,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;
 
-       vmalloc_sync_all();
+       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);
This page took 0.024653 seconds and 4 git commands to generate.