diff options
| author | Steven Rostedt <srostedt@redhat.com> | 2009-03-09 23:03:44 -0400 |
|---|---|---|
| committer | Steven Rostedt <srostedt@redhat.com> | 2009-03-10 00:35:09 -0400 |
| commit | 12b5fdb8bbb2d2fc31746d7b672c12fd8897aa08 (patch) | |
| tree | e3fa71cd3b5613d105b1a081cec23b2a51842867 /include/trace | |
| parent | da4d03020c2af32f73e8bfbab0a66620d85bb9bb (diff) | |
tracing: convert the sched trace points to the TRACE_EVENT macros
Impact: enhancement
This patch converts the rest of the sched trace points to use the new
more powerful TRACE_EVENT macro.
Signed-off-by: Steven Rostedt <srostedt@redhat.com>
Diffstat (limited to 'include/trace')
| -rw-r--r-- | include/trace/sched_event_types.h | 322 |
1 files changed, 246 insertions, 76 deletions
diff --git a/include/trace/sched_event_types.h b/include/trace/sched_event_types.h index aa77fb754038..0bbbf410e01f 100644 --- a/include/trace/sched_event_types.h +++ b/include/trace/sched_event_types.h | |||
| @@ -8,59 +8,137 @@ | |||
| 8 | #undef TRACE_SYSTEM | 8 | #undef TRACE_SYSTEM |
| 9 | #define TRACE_SYSTEM sched | 9 | #define TRACE_SYSTEM sched |
| 10 | 10 | ||
| 11 | TRACE_EVENT_FORMAT(sched_kthread_stop, | 11 | /* |
| 12 | * Tracepoint for calling kthread_stop, performed to end a kthread: | ||
| 13 | */ | ||
| 14 | TRACE_EVENT(sched_kthread_stop, | ||
| 15 | |||
| 12 | TP_PROTO(struct task_struct *t), | 16 | TP_PROTO(struct task_struct *t), |
| 17 | |||
| 13 | TP_ARGS(t), | 18 | TP_ARGS(t), |
| 14 | TP_FMT("task %s:%d", t->comm, t->pid), | 19 | |
| 15 | TRACE_STRUCT( | 20 | TP_STRUCT__entry( |
| 16 | TRACE_FIELD(pid_t, pid, t->pid) | 21 | __array( char, comm, TASK_COMM_LEN ) |
| 22 | __field( pid_t, pid ) | ||
| 17 | ), | 23 | ), |
| 18 | TP_RAW_FMT("task %d") | ||
| 19 | ); | ||
| 20 | 24 | ||
| 21 | TRACE_EVENT_FORMAT(sched_kthread_stop_ret, | 25 | TP_printk("task %s:%d", __entry->comm, __entry->pid), |
| 26 | |||
| 27 | TP_fast_assign( | ||
| 28 | memcpy(__entry->comm, t->comm, TASK_COMM_LEN); | ||
| 29 | __entry->pid = t->pid; | ||
| 30 | ) | ||
| 31 | ); | ||
| 32 | |||
| 33 | /* | ||
| 34 | * Tracepoint for the return value of the kthread stopping: | ||
| 35 | */ | ||
| 36 | TRACE_EVENT(sched_kthread_stop_ret, | ||
| 37 | |||
| 22 | TP_PROTO(int ret), | 38 | TP_PROTO(int ret), |
| 39 | |||
| 23 | TP_ARGS(ret), | 40 | TP_ARGS(ret), |
| 24 | TP_FMT("ret=%d", ret), | 41 | |
| 25 | TRACE_STRUCT( | 42 | TP_STRUCT__entry( |
| 26 | TRACE_FIELD(int, ret, ret) | 43 | __field( int, ret ) |
| 27 | ), | 44 | ), |
| 28 | TP_RAW_FMT("ret=%d") | ||
| 29 | ); | ||
| 30 | 45 | ||
| 31 | TRACE_EVENT_FORMAT(sched_wait_task, | 46 | TP_printk("ret %d", __entry->ret), |
| 47 | |||
| 48 | TP_fast_assign( | ||
| 49 | __entry->ret = ret; | ||
| 50 | ) | ||
| 51 | ); | ||
| 52 | |||
| 53 | /* | ||
| 54 | * Tracepoint for waiting on task to unschedule: | ||
| 55 | * | ||
| 56 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
| 57 | * but used by the latency tracer plugin. ) | ||
| 58 | */ | ||
| 59 | TRACE_EVENT(sched_wait_task, | ||
| 60 | |||
| 32 | TP_PROTO(struct rq *rq, struct task_struct *p), | 61 | TP_PROTO(struct rq *rq, struct task_struct *p), |
| 62 | |||
| 33 | TP_ARGS(rq, p), | 63 | TP_ARGS(rq, p), |
| 34 | TP_FMT("task %s:%d", p->comm, p->pid), | 64 | |
| 35 | TRACE_STRUCT( | 65 | TP_STRUCT__entry( |
| 36 | TRACE_FIELD(pid_t, pid, p->pid) | 66 | __array( char, comm, TASK_COMM_LEN ) |
| 67 | __field( pid_t, pid ) | ||
| 68 | __field( int, prio ) | ||
| 37 | ), | 69 | ), |
| 38 | TP_RAW_FMT("task %d") | ||
| 39 | ); | ||
| 40 | 70 | ||
| 41 | TRACE_EVENT_FORMAT(sched_wakeup, | 71 | TP_printk("task %s:%d [%d]", |
| 72 | __entry->comm, __entry->pid, __entry->prio), | ||
| 73 | |||
| 74 | TP_fast_assign( | ||
| 75 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 76 | __entry->pid = p->pid; | ||
| 77 | __entry->prio = p->prio; | ||
| 78 | ) | ||
| 79 | ); | ||
| 80 | |||
| 81 | /* | ||
| 82 | * Tracepoint for waking up a task: | ||
| 83 | * | ||
| 84 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
| 85 | * but used by the latency tracer plugin. ) | ||
| 86 | */ | ||
| 87 | TRACE_EVENT(sched_wakeup, | ||
| 88 | |||
| 42 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), | 89 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), |
| 90 | |||
| 43 | TP_ARGS(rq, p, success), | 91 | TP_ARGS(rq, p, success), |
| 44 | TP_FMT("task %s:%d %s", | 92 | |
| 45 | p->comm, p->pid, success ? "succeeded" : "failed"), | 93 | TP_STRUCT__entry( |
| 46 | TRACE_STRUCT( | 94 | __array( char, comm, TASK_COMM_LEN ) |
| 47 | TRACE_FIELD(pid_t, pid, p->pid) | 95 | __field( pid_t, pid ) |
| 48 | TRACE_FIELD(int, success, success) | 96 | __field( int, prio ) |
| 97 | __field( int, success ) | ||
| 49 | ), | 98 | ), |
| 50 | TP_RAW_FMT("task %d success=%d") | ||
| 51 | ); | ||
| 52 | 99 | ||
| 53 | TRACE_EVENT_FORMAT(sched_wakeup_new, | 100 | TP_printk("task %s:%d [%d] success=%d", |
| 101 | __entry->comm, __entry->pid, __entry->prio, | ||
| 102 | __entry->success), | ||
| 103 | |||
| 104 | TP_fast_assign( | ||
| 105 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 106 | __entry->pid = p->pid; | ||
| 107 | __entry->prio = p->prio; | ||
| 108 | __entry->success = success; | ||
| 109 | ) | ||
| 110 | ); | ||
| 111 | |||
| 112 | /* | ||
| 113 | * Tracepoint for waking up a new task: | ||
| 114 | * | ||
| 115 | * (NOTE: the 'rq' argument is not used by generic trace events, | ||
| 116 | * but used by the latency tracer plugin. ) | ||
| 117 | */ | ||
| 118 | TRACE_EVENT(sched_wakeup_new, | ||
| 119 | |||
| 54 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), | 120 | TP_PROTO(struct rq *rq, struct task_struct *p, int success), |
| 121 | |||
| 55 | TP_ARGS(rq, p, success), | 122 | TP_ARGS(rq, p, success), |
| 56 | TP_FMT("task %s:%d", | 123 | |
| 57 | p->comm, p->pid, success ? "succeeded" : "failed"), | 124 | TP_STRUCT__entry( |
| 58 | TRACE_STRUCT( | 125 | __array( char, comm, TASK_COMM_LEN ) |
| 59 | TRACE_FIELD(pid_t, pid, p->pid) | 126 | __field( pid_t, pid ) |
| 60 | TRACE_FIELD(int, success, success) | 127 | __field( int, prio ) |
| 128 | __field( int, success ) | ||
| 61 | ), | 129 | ), |
| 62 | TP_RAW_FMT("task %d success=%d") | 130 | |
| 63 | ); | 131 | TP_printk("task %s:%d [%d] success=%d", |
| 132 | __entry->comm, __entry->pid, __entry->prio, | ||
| 133 | __entry->success), | ||
| 134 | |||
| 135 | TP_fast_assign( | ||
| 136 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 137 | __entry->pid = p->pid; | ||
| 138 | __entry->prio = p->prio; | ||
| 139 | __entry->success = success; | ||
| 140 | ) | ||
| 141 | ); | ||
| 64 | 142 | ||
| 65 | /* | 143 | /* |
| 66 | * Tracepoint for task switches, performed by the scheduler: | 144 | * Tracepoint for task switches, performed by the scheduler: |
| @@ -98,70 +176,162 @@ TRACE_EVENT(sched_switch, | |||
| 98 | ) | 176 | ) |
| 99 | ); | 177 | ); |
| 100 | 178 | ||
| 101 | TRACE_EVENT_FORMAT(sched_migrate_task, | 179 | /* |
| 180 | * Tracepoint for a task being migrated: | ||
| 181 | */ | ||
| 182 | TRACE_EVENT(sched_migrate_task, | ||
| 183 | |||
| 102 | TP_PROTO(struct task_struct *p, int orig_cpu, int dest_cpu), | 184 | TP_PROTO(struct task_struct *p, int orig_cpu, int dest_cpu), |
| 185 | |||
| 103 | TP_ARGS(p, orig_cpu, dest_cpu), | 186 | TP_ARGS(p, orig_cpu, dest_cpu), |
| 104 | TP_FMT("task %s:%d from: %d to: %d", | 187 | |
| 105 | p->comm, p->pid, orig_cpu, dest_cpu), | 188 | TP_STRUCT__entry( |
| 106 | TRACE_STRUCT( | 189 | __array( char, comm, TASK_COMM_LEN ) |
| 107 | TRACE_FIELD(pid_t, pid, p->pid) | 190 | __field( pid_t, pid ) |
| 108 | TRACE_FIELD(int, orig_cpu, orig_cpu) | 191 | __field( int, prio ) |
| 109 | TRACE_FIELD(int, dest_cpu, dest_cpu) | 192 | __field( int, orig_cpu ) |
| 193 | __field( int, dest_cpu ) | ||
| 110 | ), | 194 | ), |
| 111 | TP_RAW_FMT("task %d from: %d to: %d") | ||
| 112 | ); | ||
| 113 | 195 | ||
| 114 | TRACE_EVENT_FORMAT(sched_process_free, | 196 | TP_printk("task %s:%d [%d] from: %d to: %d", |
| 197 | __entry->comm, __entry->pid, __entry->prio, | ||
| 198 | __entry->orig_cpu, __entry->dest_cpu), | ||
| 199 | |||
| 200 | TP_fast_assign( | ||
| 201 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 202 | __entry->pid = p->pid; | ||
| 203 | __entry->prio = p->prio; | ||
| 204 | __entry->orig_cpu = orig_cpu; | ||
| 205 | __entry->dest_cpu = dest_cpu; | ||
| 206 | ) | ||
| 207 | ); | ||
| 208 | |||
| 209 | /* | ||
| 210 | * Tracepoint for freeing a task: | ||
| 211 | */ | ||
| 212 | TRACE_EVENT(sched_process_free, | ||
| 213 | |||
| 115 | TP_PROTO(struct task_struct *p), | 214 | TP_PROTO(struct task_struct *p), |
| 215 | |||
| 116 | TP_ARGS(p), | 216 | TP_ARGS(p), |
| 117 | TP_FMT("task %s:%d", p->comm, p->pid), | 217 | |
| 118 | TRACE_STRUCT( | 218 | TP_STRUCT__entry( |
| 119 | TRACE_FIELD(pid_t, pid, p->pid) | 219 | __array( char, comm, TASK_COMM_LEN ) |
| 220 | __field( pid_t, pid ) | ||
| 221 | __field( int, prio ) | ||
| 120 | ), | 222 | ), |
| 121 | TP_RAW_FMT("task %d") | ||
| 122 | ); | ||
| 123 | 223 | ||
| 124 | TRACE_EVENT_FORMAT(sched_process_exit, | 224 | TP_printk("task %s:%d [%d]", |
| 225 | __entry->comm, __entry->pid, __entry->prio), | ||
| 226 | |||
| 227 | TP_fast_assign( | ||
| 228 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 229 | __entry->pid = p->pid; | ||
| 230 | __entry->prio = p->prio; | ||
| 231 | ) | ||
| 232 | ); | ||
| 233 | |||
| 234 | /* | ||
| 235 | * Tracepoint for a task exiting: | ||
| 236 | */ | ||
| 237 | TRACE_EVENT(sched_process_exit, | ||
| 238 | |||
| 125 | TP_PROTO(struct task_struct *p), | 239 | TP_PROTO(struct task_struct *p), |
| 240 | |||
| 126 | TP_ARGS(p), | 241 | TP_ARGS(p), |
| 127 | TP_FMT("task %s:%d", p->comm, p->pid), | 242 | |
| 128 | TRACE_STRUCT( | 243 | TP_STRUCT__entry( |
| 129 | TRACE_FIELD(pid_t, pid, p->pid) | 244 | __array( char, comm, TASK_COMM_LEN ) |
| 245 | __field( pid_t, pid ) | ||
| 246 | __field( int, prio ) | ||
| 130 | ), | 247 | ), |
| 131 | TP_RAW_FMT("task %d") | ||
| 132 | ); | ||
| 133 | 248 | ||
| 134 | TRACE_EVENT_FORMAT(sched_process_wait, | 249 | TP_printk("task %s:%d [%d]", |
| 250 | __entry->comm, __entry->pid, __entry->prio), | ||
| 251 | |||
| 252 | TP_fast_assign( | ||
| 253 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 254 | __entry->pid = p->pid; | ||
| 255 | __entry->prio = p->prio; | ||
| 256 | ) | ||
| 257 | ); | ||
| 258 | |||
| 259 | /* | ||
| 260 | * Tracepoint for a waiting task: | ||
| 261 | */ | ||
| 262 | TRACE_EVENT(sched_process_wait, | ||
| 263 | |||
| 135 | TP_PROTO(struct pid *pid), | 264 | TP_PROTO(struct pid *pid), |
| 265 | |||
| 136 | TP_ARGS(pid), | 266 | TP_ARGS(pid), |
| 137 | TP_FMT("pid %d", pid_nr(pid)), | 267 | |
| 138 | TRACE_STRUCT( | 268 | TP_STRUCT__entry( |
| 139 | TRACE_FIELD(pid_t, pid, pid_nr(pid)) | 269 | __array( char, comm, TASK_COMM_LEN ) |
| 270 | __field( pid_t, pid ) | ||
| 271 | __field( int, prio ) | ||
| 140 | ), | 272 | ), |
| 141 | TP_RAW_FMT("task %d") | ||
| 142 | ); | ||
| 143 | 273 | ||
| 144 | TRACE_EVENT_FORMAT(sched_process_fork, | 274 | TP_printk("task %s:%d [%d]", |
| 275 | __entry->comm, __entry->pid, __entry->prio), | ||
| 276 | |||
| 277 | TP_fast_assign( | ||
| 278 | memcpy(__entry->comm, current->comm, TASK_COMM_LEN); | ||
| 279 | __entry->pid = pid_nr(pid); | ||
| 280 | __entry->prio = current->prio; | ||
| 281 | ) | ||
| 282 | ); | ||
| 283 | |||
| 284 | /* | ||
| 285 | * Tracepoint for do_fork: | ||
| 286 | */ | ||
| 287 | TRACE_EVENT(sched_process_fork, | ||
| 288 | |||
| 145 | TP_PROTO(struct task_struct *parent, struct task_struct *child), | 289 | TP_PROTO(struct task_struct *parent, struct task_struct *child), |
| 290 | |||
| 146 | TP_ARGS(parent, child), | 291 | TP_ARGS(parent, child), |
| 147 | TP_FMT("parent %s:%d child %s:%d", | 292 | |
| 148 | parent->comm, parent->pid, child->comm, child->pid), | 293 | TP_STRUCT__entry( |
| 149 | TRACE_STRUCT( | 294 | __array( char, parent_comm, TASK_COMM_LEN ) |
| 150 | TRACE_FIELD(pid_t, parent, parent->pid) | 295 | __field( pid_t, parent_pid ) |
| 151 | TRACE_FIELD(pid_t, child, child->pid) | 296 | __array( char, child_comm, TASK_COMM_LEN ) |
| 297 | __field( pid_t, child_pid ) | ||
| 152 | ), | 298 | ), |
| 153 | TP_RAW_FMT("parent %d child %d") | ||
| 154 | ); | ||
| 155 | 299 | ||
| 156 | TRACE_EVENT_FORMAT(sched_signal_send, | 300 | TP_printk("parent %s:%d child %s:%d", |
| 301 | __entry->parent_comm, __entry->parent_pid, | ||
| 302 | __entry->child_comm, __entry->child_pid), | ||
| 303 | |||
| 304 | TP_fast_assign( | ||
| 305 | memcpy(__entry->parent_comm, parent->comm, TASK_COMM_LEN); | ||
| 306 | __entry->parent_pid = parent->pid; | ||
| 307 | memcpy(__entry->child_comm, child->comm, TASK_COMM_LEN); | ||
| 308 | __entry->child_pid = child->pid; | ||
| 309 | ) | ||
| 310 | ); | ||
| 311 | |||
| 312 | /* | ||
| 313 | * Tracepoint for sending a signal: | ||
| 314 | */ | ||
| 315 | TRACE_EVENT(sched_signal_send, | ||
| 316 | |||
| 157 | TP_PROTO(int sig, struct task_struct *p), | 317 | TP_PROTO(int sig, struct task_struct *p), |
| 318 | |||
| 158 | TP_ARGS(sig, p), | 319 | TP_ARGS(sig, p), |
| 159 | TP_FMT("sig: %d task %s:%d", sig, p->comm, p->pid), | 320 | |
| 160 | TRACE_STRUCT( | 321 | TP_STRUCT__entry( |
| 161 | TRACE_FIELD(int, sig, sig) | 322 | __field( int, sig ) |
| 162 | TRACE_FIELD(pid_t, pid, p->pid) | 323 | __array( char, comm, TASK_COMM_LEN ) |
| 324 | __field( pid_t, pid ) | ||
| 163 | ), | 325 | ), |
| 164 | TP_RAW_FMT("sig: %d task %d") | 326 | |
| 165 | ); | 327 | TP_printk("sig: %d task %s:%d", |
| 328 | __entry->sig, __entry->comm, __entry->pid), | ||
| 329 | |||
| 330 | TP_fast_assign( | ||
| 331 | memcpy(__entry->comm, p->comm, TASK_COMM_LEN); | ||
| 332 | __entry->pid = p->pid; | ||
| 333 | __entry->sig = sig; | ||
| 334 | ) | ||
| 335 | ); | ||
| 166 | 336 | ||
| 167 | #undef TRACE_SYSTEM | 337 | #undef TRACE_SYSTEM |
