aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus
diff options
context:
space:
mode:
authorJonathan Herman <hermanjl@cs.unc.edu>2012-03-15 12:11:32 -0400
committerJonathan Herman <hermanjl@cs.unc.edu>2012-03-15 12:11:32 -0400
commit88b8f6f7015c320706ef8a258404e169708a4acf (patch)
tree430b3eb33b6b08f7b916adf783239b082a74ab59 /include/litmus
parent69de127d6bb76821884abb1c1ce5c1f6a5829ded (diff)
First container trace iteration
Diffstat (limited to 'include/litmus')
-rw-r--r--include/litmus/litmus.h2
-rw-r--r--include/litmus/rt_param.h1
-rw-r--r--include/litmus/sched_plugin.h5
-rw-r--r--include/litmus/sched_trace.h36
4 files changed, 44 insertions, 0 deletions
diff --git a/include/litmus/litmus.h b/include/litmus/litmus.h
index 4322d59c0e8f..d5dbc82f0dfc 100644
--- a/include/litmus/litmus.h
+++ b/include/litmus/litmus.h
@@ -44,6 +44,8 @@ void litmus_exit_task(struct task_struct *tsk);
44 44
45#define tsk_rt(t) (&(t)->rt_param) 45#define tsk_rt(t) (&(t)->rt_param)
46 46
47#define get_server_job(t) (tsk_rt(t)->job_params.fake_job_no)
48
47/* Realtime utility macros */ 49/* Realtime utility macros */
48#define get_rt_flags(t) (tsk_rt(t)->flags) 50#define get_rt_flags(t) (tsk_rt(t)->flags)
49#define set_rt_flags(t,f) (tsk_rt(t)->flags=(f)) 51#define set_rt_flags(t,f) (tsk_rt(t)->flags=(f))
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h
index 55419d411614..4293575d3472 100644
--- a/include/litmus/rt_param.h
+++ b/include/litmus/rt_param.h
@@ -85,6 +85,7 @@ struct rt_job {
85 85
86 lt_t real_release; 86 lt_t real_release;
87 lt_t real_deadline; 87 lt_t real_deadline;
88 unsigned int fake_job_no;
88 89
89 /* How much service has this job received so far? */ 90 /* How much service has this job received so far? */
90 lt_t exec_time; 91 lt_t exec_time;
diff --git a/include/litmus/sched_plugin.h b/include/litmus/sched_plugin.h
index 32c23974e45a..0f529fa78b4d 100644
--- a/include/litmus/sched_plugin.h
+++ b/include/litmus/sched_plugin.h
@@ -69,6 +69,9 @@ typedef long (*admit_task_t)(struct task_struct* tsk);
69 69
70typedef void (*release_at_t)(struct task_struct *t, lt_t start); 70typedef void (*release_at_t)(struct task_struct *t, lt_t start);
71 71
72/* TODO remove me */
73typedef void (*release_ts_t)(lt_t time);
74
72struct sched_plugin { 75struct sched_plugin {
73 struct list_head list; 76 struct list_head list;
74 /* basic info */ 77 /* basic info */
@@ -95,6 +98,8 @@ struct sched_plugin {
95 task_block_t task_block; 98 task_block_t task_block;
96 task_exit_t task_exit; 99 task_exit_t task_exit;
97 100
101 release_ts_t release_ts;
102
98#ifdef CONFIG_LITMUS_LOCKING 103#ifdef CONFIG_LITMUS_LOCKING
99 /* locking protocols */ 104 /* locking protocols */
100 allocate_lock_t allocate_lock; 105 allocate_lock_t allocate_lock;
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h
index 6868a07dac46..368bd3dc3be8 100644
--- a/include/litmus/sched_trace.h
+++ b/include/litmus/sched_trace.h
@@ -181,6 +181,13 @@ feather_callback void do_sched_trace_sys_release(unsigned long id,
181#define trace_litmus_task_resume(t) 181#define trace_litmus_task_resume(t)
182#define trace_litmus_sys_release(start) 182#define trace_litmus_sys_release(start)
183 183
184#define trace_litmus_container_param(cid, name)
185#define trace_litmus_server_param(sid, cid, wcet, time)
186#define trace_litmus_server_switch_to(sid, job, tid)
187#define trace_litmus_server_switch_away(sid, job, tid)
188#define trace_litmus_server_release(sid, job, release, deadline)
189#define trace_litmus_server_completion(sid, job)
190
184#endif 191#endif
185 192
186 193
@@ -258,6 +265,35 @@ feather_callback void do_sched_trace_sys_release(unsigned long id,
258 sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ 265 sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \
259 TRACE_ARGS, litmus_clock() - _qt_start) 266 TRACE_ARGS, litmus_clock() - _qt_start)
260 267
268#define sched_trace_container_param(cid, name) \
269 do { \
270 trace_litmus_container_param(cid, name); \
271 } while (0)
272
273#define sched_trace_server_param(sid, cid, wcet, period) \
274 do { \
275 trace_litmus_server_param(sid, cid, wcet, period); \
276 } while(0)
277
278#define sched_trace_server_switch_to(sid, job, tid) \
279 do { \
280 trace_litmus_server_switch_to(sid, job, tid); \
281 } while(0)
282
283#define sched_trace_server_switch_away(sid, job, tid) \
284 do { \
285 trace_litmus_server_switch_away(sid, job, tid); \
286 } while (0)
287
288#define sched_trace_server_release(sid, job, rel, dead) \
289 do { \
290 trace_litmus_server_release(sid, job, rel, dead); \
291 } while (0)
292
293#define sched_trace_server_completion(sid, job) \
294 do { \
295 trace_litmus_server_completion(sid, job); \
296 } while (0)
261 297
262#define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */ 298#define sched_trace_quantum_boundary() /* NOT IMPLEMENTED */
263 299