diff options
author | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-05-15 13:39:52 -0400 |
---|---|---|
committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2012-09-27 15:46:08 -0400 |
commit | 8f08598f8bc3f47a5c26241575e30df64f444641 (patch) | |
tree | 13fc954742b1e70be38b4aa99a1b1a5f44fc5e8d /include/litmus/sched_trace.h | |
parent | c445c89aacd79d3083af45c02b8e7db32bfe9dfb (diff) |
Summarize schedulability with final record
Conflicts:
include/litmus/rt_param.h
litmus/sched_color.c
Diffstat (limited to 'include/litmus/sched_trace.h')
-rw-r--r-- | include/litmus/sched_trace.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index f910c63c067..bf6c4cf4316 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h | |||
@@ -85,6 +85,12 @@ struct st_task_exit_data { | |||
85 | u64 max_exec_time; | 85 | u64 max_exec_time; |
86 | }; | 86 | }; |
87 | 87 | ||
88 | struct st_task_tardy_data { | ||
89 | u64 total_tardy; | ||
90 | u32 max_tardy; | ||
91 | u32 missed; | ||
92 | }; | ||
93 | |||
88 | #define DATA(x) struct st_ ## x ## _data x; | 94 | #define DATA(x) struct st_ ## x ## _data x; |
89 | 95 | ||
90 | typedef enum { | 96 | typedef enum { |
@@ -101,6 +107,7 @@ typedef enum { | |||
101 | ST_ACTION, | 107 | ST_ACTION, |
102 | ST_SYS_RELEASE, | 108 | ST_SYS_RELEASE, |
103 | ST_TASK_EXIT, | 109 | ST_TASK_EXIT, |
110 | ST_TASK_TARDY, | ||
104 | } st_event_record_type_t; | 111 | } st_event_record_type_t; |
105 | 112 | ||
106 | struct st_event_record { | 113 | struct st_event_record { |
@@ -120,6 +127,7 @@ struct st_event_record { | |||
120 | DATA(action); | 127 | DATA(action); |
121 | DATA(sys_release); | 128 | DATA(sys_release); |
122 | DATA(task_exit); | 129 | DATA(task_exit); |
130 | DATA(task_tardy); | ||
123 | } data; | 131 | } data; |
124 | }; | 132 | }; |
125 | 133 | ||
@@ -163,6 +171,8 @@ feather_callback void do_sched_trace_sys_release(unsigned long id, | |||
163 | lt_t* start); | 171 | lt_t* start); |
164 | feather_callback void do_sched_trace_task_exit(unsigned long id, | 172 | feather_callback void do_sched_trace_task_exit(unsigned long id, |
165 | struct task_struct* task); | 173 | struct task_struct* task); |
174 | feather_callback void do_sched_trace_task_tardy(unsigned long id, | ||
175 | struct task_struct* task); | ||
166 | 176 | ||
167 | #endif | 177 | #endif |
168 | 178 | ||
@@ -189,6 +199,7 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, | |||
189 | #define trace_litmus_task_resume(t) | 199 | #define trace_litmus_task_resume(t) |
190 | #define trace_litmus_sys_release(start) | 200 | #define trace_litmus_sys_release(start) |
191 | #define trace_litmus_task_exit(t) | 201 | #define trace_litmus_task_exit(t) |
202 | #define trace_litmus_task_tardy(t) | ||
192 | 203 | ||
193 | #define trace_litmus_container_param(cid, name) | 204 | #define trace_litmus_container_param(cid, name) |
194 | #define trace_litmus_server_param(sid, cid, wcet, time) | 205 | #define trace_litmus_server_param(sid, cid, wcet, time) |
@@ -292,6 +303,14 @@ feather_callback void do_sched_trace_task_exit(unsigned long id, | |||
292 | trace_litmus_task_exit(t); \ | 303 | trace_litmus_task_exit(t); \ |
293 | } while (0) | 304 | } while (0) |
294 | 305 | ||
306 | |||
307 | #define sched_trace_task_tardy(t) \ | ||
308 | do { \ | ||
309 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 12, \ | ||
310 | do_sched_trace_task_tardy, t); \ | ||
311 | trace_litmus_task_tardy(t); \ | ||
312 | } while (0) | ||
313 | |||
295 | #define QT_START lt_t _qt_start = litmus_clock() | 314 | #define QT_START lt_t _qt_start = litmus_clock() |
296 | #define QT_END \ | 315 | #define QT_END \ |
297 | sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ | 316 | sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ |