2 /* use <trace/sched.h> instead */
4 # error Do not include this file directly.
5 # error Unless you know what you are doing.
9 #define TRACE_SYSTEM sched
12 * Tracepoint for calling kthread_stop, performed to end a kthread:
14 TRACE_EVENT(sched_kthread_stop
,
16 TP_PROTO(struct task_struct
*t
),
21 __array( char, comm
, TASK_COMM_LEN
)
26 memcpy(__entry
->comm
, t
->comm
, TASK_COMM_LEN
);
27 __entry
->pid
= t
->pid
;
30 TP_printk("task %s:%d", __entry
->comm
, __entry
->pid
)
34 * Tracepoint for the return value of the kthread stopping:
36 TRACE_EVENT(sched_kthread_stop_ret
,
50 TP_printk("ret %d", __entry
->ret
)
54 * Tracepoint for waiting on task to unschedule:
56 * (NOTE: the 'rq' argument is not used by generic trace events,
57 * but used by the latency tracer plugin. )
59 TRACE_EVENT(sched_wait_task
,
61 TP_PROTO(struct rq
*rq
, struct task_struct
*p
),
66 __array( char, comm
, TASK_COMM_LEN
)
72 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
73 __entry
->pid
= p
->pid
;
74 __entry
->prio
= p
->prio
;
77 TP_printk("task %s:%d [%d]",
78 __entry
->comm
, __entry
->pid
, __entry
->prio
)
82 * Tracepoint for waking up a task:
84 * (NOTE: the 'rq' argument is not used by generic trace events,
85 * but used by the latency tracer plugin. )
87 TRACE_EVENT(sched_wakeup
,
89 TP_PROTO(struct rq
*rq
, struct task_struct
*p
, int success
),
91 TP_ARGS(rq
, p
, success
),
94 __array( char, comm
, TASK_COMM_LEN
)
97 __field( int, success
)
101 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
102 __entry
->pid
= p
->pid
;
103 __entry
->prio
= p
->prio
;
104 __entry
->success
= success
;
107 TP_printk("task %s:%d [%d] success=%d",
108 __entry
->comm
, __entry
->pid
, __entry
->prio
,
113 * Tracepoint for waking up a new task:
115 * (NOTE: the 'rq' argument is not used by generic trace events,
116 * but used by the latency tracer plugin. )
118 TRACE_EVENT(sched_wakeup_new
,
120 TP_PROTO(struct rq
*rq
, struct task_struct
*p
, int success
),
122 TP_ARGS(rq
, p
, success
),
125 __array( char, comm
, TASK_COMM_LEN
)
126 __field( pid_t
, pid
)
128 __field( int, success
)
132 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
133 __entry
->pid
= p
->pid
;
134 __entry
->prio
= p
->prio
;
135 __entry
->success
= success
;
138 TP_printk("task %s:%d [%d] success=%d",
139 __entry
->comm
, __entry
->pid
, __entry
->prio
,
144 * Tracepoint for task switches, performed by the scheduler:
146 * (NOTE: the 'rq' argument is not used by generic trace events,
147 * but used by the latency tracer plugin. )
149 TRACE_EVENT(sched_switch
,
151 TP_PROTO(struct rq
*rq
, struct task_struct
*prev
,
152 struct task_struct
*next
),
154 TP_ARGS(rq
, prev
, next
),
157 __array( char, prev_comm
, TASK_COMM_LEN
)
158 __field( pid_t
, prev_pid
)
159 __field( int, prev_prio
)
160 __array( char, next_comm
, TASK_COMM_LEN
)
161 __field( pid_t
, next_pid
)
162 __field( int, next_prio
)
166 memcpy(__entry
->next_comm
, next
->comm
, TASK_COMM_LEN
);
167 __entry
->prev_pid
= prev
->pid
;
168 __entry
->prev_prio
= prev
->prio
;
169 memcpy(__entry
->prev_comm
, prev
->comm
, TASK_COMM_LEN
);
170 __entry
->next_pid
= next
->pid
;
171 __entry
->next_prio
= next
->prio
;
174 TP_printk("task %s:%d [%d] ==> %s:%d [%d]",
175 __entry
->prev_comm
, __entry
->prev_pid
, __entry
->prev_prio
,
176 __entry
->next_comm
, __entry
->next_pid
, __entry
->next_prio
)
180 * Tracepoint for a task being migrated:
182 TRACE_EVENT(sched_migrate_task
,
184 TP_PROTO(struct task_struct
*p
, int orig_cpu
, int dest_cpu
),
186 TP_ARGS(p
, orig_cpu
, dest_cpu
),
189 __array( char, comm
, TASK_COMM_LEN
)
190 __field( pid_t
, pid
)
192 __field( int, orig_cpu
)
193 __field( int, dest_cpu
)
197 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
198 __entry
->pid
= p
->pid
;
199 __entry
->prio
= p
->prio
;
200 __entry
->orig_cpu
= orig_cpu
;
201 __entry
->dest_cpu
= dest_cpu
;
204 TP_printk("task %s:%d [%d] from: %d to: %d",
205 __entry
->comm
, __entry
->pid
, __entry
->prio
,
206 __entry
->orig_cpu
, __entry
->dest_cpu
)
210 * Tracepoint for freeing a task:
212 TRACE_EVENT(sched_process_free
,
214 TP_PROTO(struct task_struct
*p
),
219 __array( char, comm
, TASK_COMM_LEN
)
220 __field( pid_t
, pid
)
225 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
226 __entry
->pid
= p
->pid
;
227 __entry
->prio
= p
->prio
;
230 TP_printk("task %s:%d [%d]",
231 __entry
->comm
, __entry
->pid
, __entry
->prio
)
235 * Tracepoint for a task exiting:
237 TRACE_EVENT(sched_process_exit
,
239 TP_PROTO(struct task_struct
*p
),
244 __array( char, comm
, TASK_COMM_LEN
)
245 __field( pid_t
, pid
)
250 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
251 __entry
->pid
= p
->pid
;
252 __entry
->prio
= p
->prio
;
255 TP_printk("task %s:%d [%d]",
256 __entry
->comm
, __entry
->pid
, __entry
->prio
)
260 * Tracepoint for a waiting task:
262 TRACE_EVENT(sched_process_wait
,
264 TP_PROTO(struct pid
*pid
),
269 __array( char, comm
, TASK_COMM_LEN
)
270 __field( pid_t
, pid
)
275 memcpy(__entry
->comm
, current
->comm
, TASK_COMM_LEN
);
276 __entry
->pid
= pid_nr(pid
);
277 __entry
->prio
= current
->prio
;
280 TP_printk("task %s:%d [%d]",
281 __entry
->comm
, __entry
->pid
, __entry
->prio
)
285 * Tracepoint for do_fork:
287 TRACE_EVENT(sched_process_fork
,
289 TP_PROTO(struct task_struct
*parent
, struct task_struct
*child
),
291 TP_ARGS(parent
, child
),
294 __array( char, parent_comm
, TASK_COMM_LEN
)
295 __field( pid_t
, parent_pid
)
296 __array( char, child_comm
, TASK_COMM_LEN
)
297 __field( pid_t
, child_pid
)
301 memcpy(__entry
->parent_comm
, parent
->comm
, TASK_COMM_LEN
);
302 __entry
->parent_pid
= parent
->pid
;
303 memcpy(__entry
->child_comm
, child
->comm
, TASK_COMM_LEN
);
304 __entry
->child_pid
= child
->pid
;
307 TP_printk("parent %s:%d child %s:%d",
308 __entry
->parent_comm
, __entry
->parent_pid
,
309 __entry
->child_comm
, __entry
->child_pid
)
313 * Tracepoint for sending a signal:
315 TRACE_EVENT(sched_signal_send
,
317 TP_PROTO(int sig
, struct task_struct
*p
),
323 __array( char, comm
, TASK_COMM_LEN
)
324 __field( pid_t
, pid
)
328 memcpy(__entry
->comm
, p
->comm
, TASK_COMM_LEN
);
329 __entry
->pid
= p
->pid
;
333 TP_printk("sig: %d task %s:%d",
334 __entry
->sig
, __entry
->comm
, __entry
->pid
)