2 /* use <trace/sched.h> instead */
3 #ifndef TRACE_EVENT_FORMAT
4 # error Do not include this file directly.
5 # error Unless you know what you are doing.
9 #define TRACE_SYSTEM sched
11 TRACE_EVENT_FORMAT(sched_kthread_stop,
12 TP_PROTO(struct task_struct *t),
14 TP_FMT("task %s:%d", t->comm, t->pid),
16 TRACE_FIELD(pid_t, pid, t->pid)
21 TRACE_EVENT_FORMAT(sched_kthread_stop_ret,
24 TP_FMT("ret=%d", ret),
26 TRACE_FIELD(int, ret, ret)
31 TRACE_EVENT_FORMAT(sched_wait_task,
32 TP_PROTO(struct rq *rq, struct task_struct *p),
34 TP_FMT("task %s:%d", p->comm, p->pid),
36 TRACE_FIELD(pid_t, pid, p->pid)
41 TRACE_EVENT_FORMAT(sched_wakeup,
42 TP_PROTO(struct rq *rq, struct task_struct *p, int success),
43 TP_ARGS(rq, p, success),
44 TP_FMT("task %s:%d %s",
45 p->comm, p->pid, success ? "succeeded" : "failed"),
47 TRACE_FIELD(pid_t, pid, p->pid)
48 TRACE_FIELD(int, success, success)
50 TP_RAW_FMT("task %d success=%d")
53 TRACE_EVENT_FORMAT(sched_wakeup_new,
54 TP_PROTO(struct rq *rq, struct task_struct *p, int success),
55 TP_ARGS(rq, p, success),
57 p->comm, p->pid, success ? "succeeded" : "failed"),
59 TRACE_FIELD(pid_t, pid, p->pid)
60 TRACE_FIELD(int, success, success)
62 TP_RAW_FMT("task %d success=%d")
66 * Tracepoint for task switches, performed by the scheduler:
68 * (NOTE: the 'rq' argument is not used by generic trace events,
69 * but used by the latency tracer plugin. )
71 TRACE_EVENT(sched_switch,
73 TP_PROTO(struct rq *rq, struct task_struct *prev,
74 struct task_struct *next),
76 TP_ARGS(rq, prev, next),
79 __array( char, prev_comm, TASK_COMM_LEN )
80 __field( pid_t, prev_pid )
81 __field( int, prev_prio )
82 __array( char, next_comm, TASK_COMM_LEN )
83 __field( pid_t, next_pid )
84 __field( int, next_prio )
87 TP_printk("task %s:%d [%d] ==> %s:%d [%d]",
88 __entry->prev_comm, __entry->prev_pid, __entry->prev_prio,
89 __entry->next_comm, __entry->next_pid, __entry->next_prio),
92 memcpy(__entry->next_comm, next->comm, TASK_COMM_LEN);
93 __entry->prev_pid = prev->pid;
94 __entry->prev_prio = prev->prio;
95 memcpy(__entry->prev_comm, prev->comm, TASK_COMM_LEN);
96 __entry->next_pid = next->pid;
97 __entry->next_prio = next->prio;
101 TRACE_EVENT_FORMAT(sched_migrate_task,
102 TP_PROTO(struct task_struct *p, int orig_cpu, int dest_cpu),
103 TP_ARGS(p, orig_cpu, dest_cpu),
104 TP_FMT("task %s:%d from: %d to: %d",
105 p->comm, p->pid, orig_cpu, dest_cpu),
107 TRACE_FIELD(pid_t, pid, p->pid)
108 TRACE_FIELD(int, orig_cpu, orig_cpu)
109 TRACE_FIELD(int, dest_cpu, dest_cpu)
111 TP_RAW_FMT("task %d from: %d to: %d")
114 TRACE_EVENT_FORMAT(sched_process_free,
115 TP_PROTO(struct task_struct *p),
117 TP_FMT("task %s:%d", p->comm, p->pid),
119 TRACE_FIELD(pid_t, pid, p->pid)
121 TP_RAW_FMT("task %d")
124 TRACE_EVENT_FORMAT(sched_process_exit,
125 TP_PROTO(struct task_struct *p),
127 TP_FMT("task %s:%d", p->comm, p->pid),
129 TRACE_FIELD(pid_t, pid, p->pid)
131 TP_RAW_FMT("task %d")
134 TRACE_EVENT_FORMAT(sched_process_wait,
135 TP_PROTO(struct pid *pid),
137 TP_FMT("pid %d", pid_nr(pid)),
139 TRACE_FIELD(pid_t, pid, pid_nr(pid))
141 TP_RAW_FMT("task %d")
144 TRACE_EVENT_FORMAT(sched_process_fork,
145 TP_PROTO(struct task_struct *parent, struct task_struct *child),
146 TP_ARGS(parent, child),
147 TP_FMT("parent %s:%d child %s:%d",
148 parent->comm, parent->pid, child->comm, child->pid),
150 TRACE_FIELD(pid_t, parent, parent->pid)
151 TRACE_FIELD(pid_t, child, child->pid)
153 TP_RAW_FMT("parent %d child %d")
156 TRACE_EVENT_FORMAT(sched_signal_send,
157 TP_PROTO(int sig, struct task_struct *p),
159 TP_FMT("sig: %d task %s:%d", sig, p->comm, p->pid),
161 TRACE_FIELD(int, sig, sig)
162 TRACE_FIELD(pid_t, pid, p->pid)
164 TP_RAW_FMT("sig: %d task %d")