Adds a KMSG tracer
[akaros.git] / kern / include / smp.h
index 2da6fe9..7414184 100644 (file)
@@ -101,7 +101,25 @@ struct pcpu_trace_event {
  * use your own macro, and provide a handler.  Add your handler to
  * pcpui_tr_handlers in smp.c. */
 #define PCPUI_TR_TYPE_NULL             0
-#define PCPUI_NR_TYPES                 1
+#define PCPUI_TR_TYPE_KMSG             1
+#define PCPUI_NR_TYPES                 2
+
+#ifdef CONFIG_TRACE_KMSGS
+
+# define pcpui_trace_kmsg(pcpui, pc)                                           \
+{                                                                              \
+       struct pcpu_trace_event *e = get_trace_slot_racy(&pcpui->traces);          \
+       if (e) {                                                                   \
+               e->type = PCPUI_TR_TYPE_KMSG;                                          \
+               e->arg1 = pc;                                                          \
+       }                                                                          \
+}
+
+#else
+
+# define pcpui_trace_kmsg(pcpui, pc)
+
+#endif /* CONFIG_TRACE_KMSGS */
 
 /* Run the handlers for all events in a pcpui ring.  Can run on all cores, or
  * just one core.  'type' selects which event type is handled (0 for all). */