diff options
author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2016-06-23 06:33:08 -0400 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2016-06-23 06:33:08 -0400 |
commit | 0133f2d61aa581fc637142be67cadf63eb28b78f (patch) | |
tree | b4d74cb0129e0cfa9a56fffac7bcfe7effc9d3cc | |
parent | e779944bc6ccaa86869fcbc693ee4e9369fb322e (diff) |
sched_trace: add sched_trace_last_suspension_as_completion()
New tracepoint for tracing the completion of sporadic jobs.
-rw-r--r-- | include/litmus/sched_trace.h | 9 | ||||
-rw-r--r-- | litmus/sched_task_trace.c | 15 |
2 files changed, 24 insertions, 0 deletions
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index b4da7e39fa79..0532424fbee6 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h | |||
@@ -144,6 +144,9 @@ feather_callback void do_sched_trace_task_switch_away(unsigned long id, | |||
144 | feather_callback void do_sched_trace_task_completion(unsigned long id, | 144 | feather_callback void do_sched_trace_task_completion(unsigned long id, |
145 | struct task_struct* task, | 145 | struct task_struct* task, |
146 | unsigned long forced); | 146 | unsigned long forced); |
147 | feather_callback void do_sched_trace_last_suspension_as_completion( | ||
148 | unsigned long id, | ||
149 | struct task_struct* task); | ||
147 | feather_callback void do_sched_trace_task_block(unsigned long id, | 150 | feather_callback void do_sched_trace_task_block(unsigned long id, |
148 | struct task_struct* task); | 151 | struct task_struct* task); |
149 | feather_callback void do_sched_trace_task_resume(unsigned long id, | 152 | feather_callback void do_sched_trace_task_resume(unsigned long id, |
@@ -251,6 +254,12 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, | |||
251 | trace_litmus_sys_release(when); \ | 254 | trace_litmus_sys_release(when); \ |
252 | } while (0) | 255 | } while (0) |
253 | 256 | ||
257 | #define sched_trace_last_suspension_as_completion(t) \ | ||
258 | do { \ | ||
259 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 11, \ | ||
260 | do_sched_trace_last_suspension_as_completion, t); \ | ||
261 | } while (0) | ||
262 | |||
254 | #define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */ | 263 | #define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */ |
255 | 264 | ||
256 | #endif /* __KERNEL__ */ | 265 | #endif /* __KERNEL__ */ |
diff --git a/litmus/sched_task_trace.c b/litmus/sched_task_trace.c index f623dc7a25eb..a6088f16bb08 100644 --- a/litmus/sched_task_trace.c +++ b/litmus/sched_task_trace.c | |||
@@ -194,6 +194,21 @@ feather_callback void do_sched_trace_task_completion(unsigned long id, | |||
194 | } | 194 | } |
195 | } | 195 | } |
196 | 196 | ||
197 | feather_callback void do_sched_trace_last_suspension_as_completion( | ||
198 | unsigned long id, | ||
199 | unsigned long _task) | ||
200 | { | ||
201 | struct task_struct *t = (struct task_struct*) _task; | ||
202 | struct st_event_record* rec = get_record(ST_COMPLETION, t); | ||
203 | if (rec) { | ||
204 | rec->data.completion.when | ||
205 | = tsk_rt(t)->job_params.last_suspension; | ||
206 | rec->data.completion.forced = 0; | ||
207 | rec->data.completion.exec_time = get_exec_time(t); | ||
208 | put_record(rec); | ||
209 | } | ||
210 | } | ||
211 | |||
197 | feather_callback void do_sched_trace_task_block(unsigned long id, | 212 | feather_callback void do_sched_trace_task_block(unsigned long id, |
198 | unsigned long _task) | 213 | unsigned long _task) |
199 | { | 214 | { |