Add kernel probes for supplementary subsystems
[lttng-modules.git] / instrumentation / events / lttng-module / regulator.h
diff --git a/instrumentation/events/lttng-module/regulator.h b/instrumentation/events/lttng-module/regulator.h
new file mode 100644 (file)
index 0000000..e94da7c
--- /dev/null
@@ -0,0 +1,141 @@
+#undef TRACE_SYSTEM
+#define TRACE_SYSTEM regulator
+
+#if !defined(_TRACE_REGULATOR_H) || defined(TRACE_HEADER_MULTI_READ)
+#define _TRACE_REGULATOR_H
+
+#include <linux/ktime.h>
+#include <linux/tracepoint.h>
+
+/*
+ * Events which just log themselves and the regulator name for enable/disable
+ * type tracking.
+ */
+DECLARE_EVENT_CLASS(regulator_basic,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name),
+
+       TP_STRUCT__entry(
+               __string(       name,   name    )
+       ),
+
+       TP_fast_assign(
+               tp_strcpy(name, name);
+       ),
+
+       TP_printk("name=%s", __get_str(name))
+
+)
+
+DEFINE_EVENT(regulator_basic, regulator_enable,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name)
+
+)
+
+DEFINE_EVENT(regulator_basic, regulator_enable_delay,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name)
+
+)
+
+DEFINE_EVENT(regulator_basic, regulator_enable_complete,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name)
+
+)
+
+DEFINE_EVENT(regulator_basic, regulator_disable,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name)
+
+)
+
+DEFINE_EVENT(regulator_basic, regulator_disable_complete,
+
+       TP_PROTO(const char *name),
+
+       TP_ARGS(name)
+
+)
+
+/*
+ * Events that take a range of numerical values, mostly for voltages
+ * and so on.
+ */
+DECLARE_EVENT_CLASS(regulator_range,
+
+       TP_PROTO(const char *name, int min, int max),
+
+       TP_ARGS(name, min, max),
+
+       TP_STRUCT__entry(
+               __string(       name,           name            )
+               __field(        int,            min             )
+               __field(        int,            max             )
+       ),
+
+       TP_fast_assign(
+               tp_strcpy(name, name);
+               tp_assign(min, min);
+               tp_assign(max, max);
+       ),
+
+       TP_printk("name=%s (%d-%d)", __get_str(name),
+                 (int)__entry->min, (int)__entry->max)
+)
+
+DEFINE_EVENT(regulator_range, regulator_set_voltage,
+
+       TP_PROTO(const char *name, int min, int max),
+
+       TP_ARGS(name, min, max)
+
+)
+
+
+/*
+ * Events that take a single value, mostly for readback and refcounts.
+ */
+DECLARE_EVENT_CLASS(regulator_value,
+
+       TP_PROTO(const char *name, unsigned int val),
+
+       TP_ARGS(name, val),
+
+       TP_STRUCT__entry(
+               __string(       name,           name            )
+               __field(        unsigned int,   val             )
+       ),
+
+       TP_fast_assign(
+               tp_strcpy(name, name);
+               tp_assign(val, val);
+       ),
+
+       TP_printk("name=%s, val=%u", __get_str(name),
+                 (int)__entry->val)
+)
+
+DEFINE_EVENT(regulator_value, regulator_set_voltage_complete,
+
+       TP_PROTO(const char *name, unsigned int value),
+
+       TP_ARGS(name, value)
+
+)
+
+#endif /* _TRACE_POWER_H */
+
+/* This part must be outside protection */
+#include "../../../probes/define_trace.h"
This page took 0.025121 seconds and 4 git commands to generate.