diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2015-08-09 07:18:48 -0400 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2015-08-09 06:21:18 -0400 |
| commit | ec72e576dfcb1cb0ce0141801f3ee829f6e35137 (patch) | |
| tree | 74cec0bfcea8dafbd2c4e4fe318045f27ca3e14e /include/litmus | |
| parent | 1921674066c4ccb534e357c69629e365be626e0e (diff) | |
Add tracepoint support
This patch integrates LITMUS^RT's sched_trace_XXX() macros with
Linux's notion of tracepoints. This is useful to visualize schedules
in kernel shark and similar tools. Historically, LITMUS^RT's
sched_trace predates Linux's tracepoint infrastructure.
Diffstat (limited to 'include/litmus')
| -rw-r--r-- | include/litmus/sched_trace.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index 6044d9f0a05a..82bde8241298 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h | |||
| @@ -194,24 +194,28 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, | |||
| 194 | do { \ | 194 | do { \ |
| 195 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 2, \ | 195 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 2, \ |
| 196 | do_sched_trace_task_param, t); \ | 196 | do_sched_trace_task_param, t); \ |
| 197 | trace_litmus_task_param(t); \ | ||
| 197 | } while (0) | 198 | } while (0) |
| 198 | 199 | ||
| 199 | #define sched_trace_task_release(t) \ | 200 | #define sched_trace_task_release(t) \ |
| 200 | do { \ | 201 | do { \ |
| 201 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 3, \ | 202 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 3, \ |
| 202 | do_sched_trace_task_release, t); \ | 203 | do_sched_trace_task_release, t); \ |
| 204 | trace_litmus_task_release(t); \ | ||
| 203 | } while (0) | 205 | } while (0) |
| 204 | 206 | ||
| 205 | #define sched_trace_task_switch_to(t) \ | 207 | #define sched_trace_task_switch_to(t) \ |
| 206 | do { \ | 208 | do { \ |
| 207 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 4, \ | 209 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 4, \ |
| 208 | do_sched_trace_task_switch_to, t); \ | 210 | do_sched_trace_task_switch_to, t); \ |
| 211 | trace_litmus_switch_to(t); \ | ||
| 209 | } while (0) | 212 | } while (0) |
| 210 | 213 | ||
| 211 | #define sched_trace_task_switch_away(t) \ | 214 | #define sched_trace_task_switch_away(t) \ |
| 212 | do { \ | 215 | do { \ |
| 213 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 5, \ | 216 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 5, \ |
| 214 | do_sched_trace_task_switch_away, t); \ | 217 | do_sched_trace_task_switch_away, t); \ |
| 218 | trace_litmus_switch_away(t); \ | ||
| 215 | } while (0) | 219 | } while (0) |
| 216 | 220 | ||
| 217 | #define sched_trace_task_completion(t, forced) \ | 221 | #define sched_trace_task_completion(t, forced) \ |
| @@ -219,18 +223,21 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, | |||
| 219 | SCHED_TRACE2(SCHED_TRACE_BASE_ID + 6, \ | 223 | SCHED_TRACE2(SCHED_TRACE_BASE_ID + 6, \ |
| 220 | do_sched_trace_task_completion, t, \ | 224 | do_sched_trace_task_completion, t, \ |
| 221 | (unsigned long) forced); \ | 225 | (unsigned long) forced); \ |
| 226 | trace_litmus_task_completion(t, forced); \ | ||
| 222 | } while (0) | 227 | } while (0) |
| 223 | 228 | ||
| 224 | #define sched_trace_task_block(t) \ | 229 | #define sched_trace_task_block(t) \ |
| 225 | do { \ | 230 | do { \ |
| 226 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 7, \ | 231 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 7, \ |
| 227 | do_sched_trace_task_block, t); \ | 232 | do_sched_trace_task_block, t); \ |
| 233 | trace_litmus_task_block(t); \ | ||
| 228 | } while (0) | 234 | } while (0) |
| 229 | 235 | ||
| 230 | #define sched_trace_task_resume(t) \ | 236 | #define sched_trace_task_resume(t) \ |
| 231 | do { \ | 237 | do { \ |
| 232 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 8, \ | 238 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 8, \ |
| 233 | do_sched_trace_task_resume, t); \ | 239 | do_sched_trace_task_resume, t); \ |
| 240 | trace_litmus_task_resume(t); \ | ||
| 234 | } while (0) | 241 | } while (0) |
| 235 | 242 | ||
| 236 | #define sched_trace_action(t, action) \ | 243 | #define sched_trace_action(t, action) \ |
| @@ -242,6 +249,7 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, | |||
| 242 | do { \ | 249 | do { \ |
| 243 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 10, \ | 250 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 10, \ |
| 244 | do_sched_trace_sys_release, when); \ | 251 | do_sched_trace_sys_release, when); \ |
| 252 | trace_litmus_sys_release(when); \ | ||
| 245 | } while (0) | 253 | } while (0) |
| 246 | 254 | ||
| 247 | #define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */ | 255 | #define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */ |
