| #undef TRACE_SYSTEM |
| #define TRACE_SYSTEM hist |
| |
| #if !defined(_TRACE_HIST_H) || defined(TRACE_HEADER_MULTI_READ) |
| #define _TRACE_HIST_H |
| |
| #include "latency_hist.h" |
| #include <linux/tracepoint.h> |
| |
| #if !defined(CONFIG_PREEMPT_OFF_HIST) && !defined(CONFIG_INTERRUPT_OFF_HIST) |
| #define trace_preemptirqsoff_hist(a, b) |
| #define trace_preemptirqsoff_hist_rcuidle(a, b) |
| #else |
| TRACE_EVENT(preemptirqsoff_hist, |
| |
| TP_PROTO(int reason, int starthist), |
| |
| TP_ARGS(reason, starthist), |
| |
| TP_STRUCT__entry( |
| __field(int, reason) |
| __field(int, starthist) |
| ), |
| |
| TP_fast_assign( |
| __entry->reason = reason; |
| __entry->starthist = starthist; |
| ), |
| |
| TP_printk("reason=%s starthist=%s", getaction(__entry->reason), |
| __entry->starthist ? "start" : "stop") |
| ); |
| #endif |
| |
| #ifndef CONFIG_MISSED_TIMER_OFFSETS_HIST |
| #define trace_hrtimer_interrupt(a, b, c, d) |
| #define trace_hrtimer_interrupt_rcuidle(a, b, c, d) |
| #else |
| TRACE_EVENT(hrtimer_interrupt, |
| |
| TP_PROTO(int cpu, long long offset, struct task_struct *curr, |
| struct task_struct *task), |
| |
| TP_ARGS(cpu, offset, curr, task), |
| |
| TP_STRUCT__entry( |
| __field(int, cpu) |
| __field(long long, offset) |
| __array(char, ccomm, TASK_COMM_LEN) |
| __field(int, cprio) |
| __array(char, tcomm, TASK_COMM_LEN) |
| __field(int, tprio) |
| ), |
| |
| TP_fast_assign( |
| __entry->cpu = cpu; |
| __entry->offset = offset; |
| memcpy(__entry->ccomm, curr->comm, TASK_COMM_LEN); |
| __entry->cprio = curr->prio; |
| memcpy(__entry->tcomm, task != NULL ? task->comm : "<none>", |
| task != NULL ? TASK_COMM_LEN : 7); |
| __entry->tprio = task != NULL ? task->prio : -1; |
| ), |
| |
| TP_printk("cpu=%d offset=%lld curr=%s[%d] thread=%s[%d]", |
| __entry->cpu, __entry->offset, __entry->ccomm, |
| __entry->cprio, __entry->tcomm, __entry->tprio) |
| ); |
| #endif |
| |
| #endif /* _TRACE_HIST_H */ |
| |
| /* This part must be outside protection */ |
| #include <trace/define_trace.h> |