mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
96 lines
2.4 KiB
96 lines
2.4 KiB
/* 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>
|
|
|