aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjoern Brandenburg <bbb@mpi-sws.org>2016-06-23 06:33:08 -0400
committerBjoern Brandenburg <bbb@mpi-sws.org>2016-06-23 06:33:08 -0400
commit0133f2d61aa581fc637142be67cadf63eb28b78f (patch)
treeb4d74cb0129e0cfa9a56fffac7bcfe7effc9d3cc
parente779944bc6ccaa86869fcbc693ee4e9369fb322e (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.h9
-rw-r--r--litmus/sched_task_trace.c15
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,
144feather_callback void do_sched_trace_task_completion(unsigned long id, 144feather_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);
147feather_callback void do_sched_trace_last_suspension_as_completion(
148 unsigned long id,
149 struct task_struct* task);
147feather_callback void do_sched_trace_task_block(unsigned long id, 150feather_callback void do_sched_trace_task_block(unsigned long id,
148 struct task_struct* task); 151 struct task_struct* task);
149feather_callback void do_sched_trace_task_resume(unsigned long id, 152feather_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
197feather_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
197feather_callback void do_sched_trace_task_block(unsigned long id, 212feather_callback void do_sched_trace_task_block(unsigned long id,
198 unsigned long _task) 213 unsigned long _task)
199{ 214{