diff options
Diffstat (limited to 'include/litmus/sched_trace.h')
-rw-r--r-- | include/litmus/sched_trace.h | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index fb5d8f33aff5..80d952374f7a 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h | |||
@@ -89,6 +89,11 @@ struct st_request_mode_data { | |||
89 | u8 __unused[8]; | 89 | u8 __unused[8]; |
90 | }; | 90 | }; |
91 | 91 | ||
92 | struct st_sys_start_data { | ||
93 | u64 when; | ||
94 | u64 start; | ||
95 | }; | ||
96 | |||
92 | #define DATA(x) struct st_ ## x ## _data x; | 97 | #define DATA(x) struct st_ ## x ## _data x; |
93 | 98 | ||
94 | typedef enum { | 99 | typedef enum { |
@@ -104,7 +109,8 @@ typedef enum { | |||
104 | ST_ACTION, | 109 | ST_ACTION, |
105 | ST_SYS_RELEASE, | 110 | ST_SYS_RELEASE, |
106 | ST_ENACT_MODE, | 111 | ST_ENACT_MODE, |
107 | ST_REQUEST_MODE | 112 | ST_REQUEST_MODE, |
113 | ST_SYS_START, | ||
108 | } st_event_record_type_t; | 114 | } st_event_record_type_t; |
109 | 115 | ||
110 | struct st_event_record { | 116 | struct st_event_record { |
@@ -124,6 +130,7 @@ struct st_event_record { | |||
124 | DATA(sys_release); | 130 | DATA(sys_release); |
125 | DATA(enact_mode); | 131 | DATA(enact_mode); |
126 | DATA(request_mode); | 132 | DATA(request_mode); |
133 | DATA(sys_start); | ||
127 | } data; | 134 | } data; |
128 | }; | 135 | }; |
129 | 136 | ||
@@ -171,6 +178,8 @@ feather_callback void do_sched_trace_enact_mode(unsigned long id, | |||
171 | 178 | ||
172 | feather_callback void do_sched_trace_request_mode(unsigned long id, | 179 | feather_callback void do_sched_trace_request_mode(unsigned long id, |
173 | struct task_struct* task); | 180 | struct task_struct* task); |
181 | feather_callback void do_sched_trace_sys_start(unsigned long id, | ||
182 | lt_t* start); | ||
174 | 183 | ||
175 | #endif | 184 | #endif |
176 | 185 | ||
@@ -198,6 +207,7 @@ feather_callback void do_sched_trace_request_mode(unsigned long id, | |||
198 | #define trace_litmus_sys_release(start) | 207 | #define trace_litmus_sys_release(start) |
199 | #define trace_litmus_enact_mode(t) | 208 | #define trace_litmus_enact_mode(t) |
200 | #define trace_litmus_request_mode(t) | 209 | #define trace_litmus_request_mode(t) |
210 | #define trace_litmus_sys_start(start) | ||
201 | 211 | ||
202 | #endif | 212 | #endif |
203 | 213 | ||
@@ -286,6 +296,15 @@ feather_callback void do_sched_trace_request_mode(unsigned long id, | |||
286 | do_sched_trace_request_mode, t); \ | 296 | do_sched_trace_request_mode, t); \ |
287 | trace_litmus_request_mode(t); \ | 297 | trace_litmus_request_mode(t); \ |
288 | } while (0) | 298 | } while (0) |
299 | |||
300 | /* when is a pointer, it does not need an explicit cast to unsigned long */ | ||
301 | #define sched_trace_sys_start(when) \ | ||
302 | do { \ | ||
303 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 13, \ | ||
304 | do_sched_trace_sys_start, when); \ | ||
305 | trace_litmus_sys_start(when); \ | ||
306 | } while (0) | ||
307 | |||
289 | #endif /* __KERNEL__ */ | 308 | #endif /* __KERNEL__ */ |
290 | 309 | ||
291 | #endif | 310 | #endif |