123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /* SPDX-License-Identifier: GPL-2.0 */
- /*
- * Like the headers that use TRACE_EVENT(), the TRACE_CUSTOM_EVENT()
- * needs a header that allows for multiple inclusions.
- *
- * Test for a unique name (here we have _TRACE_CUSTOM_SCHED_H),
- * also allowing to continue if TRACE_CUSTOM_MULTI_READ is defined.
- */
- #if !defined(_TRACE_CUSTOM_SCHED_H) || defined(TRACE_CUSTOM_MULTI_READ)
- #define _TRACE_CUSTOM_SCHED_H
- /* Include linux/trace_events.h for initial defines of TRACE_CUSTOM_EVENT() */
- #include <linux/trace_events.h>
- /*
- * TRACE_CUSTOM_EVENT() is just like TRACE_EVENT(). The first parameter
- * is the event name of an existing event where the TRACE_EVENT has been included
- * in the C file before including this file.
- */
- TRACE_CUSTOM_EVENT(sched_switch,
- /*
- * The TP_PROTO() and TP_ARGS must match the trace event
- * that the custom event is using.
- */
- TP_PROTO(bool preempt,
- struct task_struct *prev,
- struct task_struct *next,
- unsigned int prev_state),
- TP_ARGS(preempt, prev, next, prev_state),
- /*
- * The next fields are where the customization happens.
- * The TP_STRUCT__entry() defines what will be recorded
- * in the ring buffer when the custom event triggers.
- *
- * The rest is just like the TRACE_EVENT() macro except that
- * it uses the custom entry.
- */
- TP_STRUCT__entry(
- __field( unsigned short, prev_prio )
- __field( unsigned short, next_prio )
- __field( pid_t, next_pid )
- ),
- TP_fast_assign(
- __entry->prev_prio = prev->prio;
- __entry->next_pid = next->pid;
- __entry->next_prio = next->prio;
- ),
- TP_printk("prev_prio=%d next_pid=%d next_prio=%d",
- __entry->prev_prio, __entry->next_pid, __entry->next_prio)
- )
- TRACE_CUSTOM_EVENT(sched_waking,
- TP_PROTO(struct task_struct *p),
- TP_ARGS(p),
- TP_STRUCT__entry(
- __field( pid_t, pid )
- __field( unsigned short, prio )
- ),
- TP_fast_assign(
- __entry->pid = p->pid;
- __entry->prio = p->prio;
- ),
- TP_printk("pid=%d prio=%d", __entry->pid, __entry->prio)
- )
- #endif
- /*
- * Just like the headers that create TRACE_EVENTs, the below must
- * be outside the protection of the above #if block.
- */
- /*
- * It is required that the Makefile includes:
- * CFLAGS_<c_file>.o := -I$(src)
- */
- #undef TRACE_INCLUDE_PATH
- #undef TRACE_INCLUDE_FILE
- #define TRACE_INCLUDE_PATH .
- /*
- * It is requred that the TRACE_INCLUDE_FILE be the same
- * as this file without the ".h".
- */
- #define TRACE_INCLUDE_FILE trace_custom_sched
- #include <trace/define_custom_trace.h>
|