2022-03-04 01:05:34 +03:00
/* 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 ,
2022-05-11 21:28:36 +03:00
struct task_struct * next ,
unsigned int prev_state ) ,
2022-03-04 01:05:34 +03:00
2022-05-11 21:28:36 +03:00
TP_ARGS ( preempt , prev , next , prev_state ) ,
2022-03-04 01:05:34 +03:00
/*
* 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>