diff options
| author | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-03-30 11:21:59 -0400 |
|---|---|---|
| committer | Jonathan Herman <hermanjl@cs.unc.edu> | 2013-03-30 11:21:59 -0400 |
| commit | b2ecb9f8d20baa3edfb305d263a7f0902ac019f3 (patch) | |
| tree | 77af90862b09542fa6fbcae7117b41b19086e552 | |
| parent | c31763ecf41cbcdb61e8960f0354d8b2e39a8645 (diff) | |
Removed ARM-specific hacks which disabled less common mixed-criticality features.wip-mc
| -rw-r--r-- | include/litmus/event_group.h | 1 | ||||
| -rw-r--r-- | include/litmus/preempt.h | 2 | ||||
| -rw-r--r-- | include/litmus/rt_param.h | 11 | ||||
| -rw-r--r-- | include/litmus/sched_mc.h | 1 | ||||
| -rw-r--r-- | include/litmus/sched_trace.h | 51 | ||||
| -rw-r--r-- | include/trace/events/litmus.h | 22 | ||||
| -rw-r--r-- | litmus/ce_domain.c | 1 | ||||
| -rw-r--r-- | litmus/jobs.c | 19 | ||||
| -rw-r--r-- | litmus/litmus.c | 3 | ||||
| -rw-r--r-- | litmus/lockdown.c | 8 | ||||
| -rw-r--r-- | litmus/preempt.c | 28 | ||||
| -rw-r--r-- | litmus/sched_mc.c | 245 | ||||
| -rw-r--r-- | litmus/sched_mc_ce.c | 63 | ||||
| -rw-r--r-- | litmus/sched_task_trace.c | 38 | ||||
| -rw-r--r-- | litmus/way_tracker.c | 2 |
15 files changed, 226 insertions, 269 deletions
diff --git a/include/litmus/event_group.h b/include/litmus/event_group.h index b2a6a3ff5627..7b15a7e0412d 100644 --- a/include/litmus/event_group.h +++ b/include/litmus/event_group.h | |||
| @@ -25,6 +25,7 @@ struct event_list { | |||
| 25 | /* For timer firing */ | 25 | /* For timer firing */ |
| 26 | lt_t fire_time; | 26 | lt_t fire_time; |
| 27 | struct hrtimer timer; | 27 | struct hrtimer timer; |
| 28 | struct hrtimer_start_on_info info; | ||
| 28 | 29 | ||
| 29 | struct list_head queue_node; /* For event_queue */ | 30 | struct list_head queue_node; /* For event_queue */ |
| 30 | struct event_group* group; /* For callback */ | 31 | struct event_group* group; /* For callback */ |
diff --git a/include/litmus/preempt.h b/include/litmus/preempt.h index cbf315aa01e9..beb4d480f21b 100644 --- a/include/litmus/preempt.h +++ b/include/litmus/preempt.h | |||
| @@ -13,7 +13,7 @@ extern DEFINE_PER_CPU_SHARED_ALIGNED(atomic_t, resched_state); | |||
| 13 | 13 | ||
| 14 | #ifdef CONFIG_PREEMPT_STATE_TRACE | 14 | #ifdef CONFIG_PREEMPT_STATE_TRACE |
| 15 | const char* sched_state_name(int s); | 15 | const char* sched_state_name(int s); |
| 16 | #define TRACE_STATE(fmt, args...) TRACE("SCHED_STATE " fmt, args) | 16 | #define TRACE_STATE(fmt, args...) STRACE("SCHED_STATE " fmt, args) |
| 17 | #else | 17 | #else |
| 18 | #define TRACE_STATE(fmt, args...) /* ignore */ | 18 | #define TRACE_STATE(fmt, args...) /* ignore */ |
| 19 | #endif | 19 | #endif |
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index a8fe95b32c06..52a0116f7282 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h | |||
| @@ -268,19 +268,14 @@ struct rt_param { | |||
| 268 | /* Pointer to the page shared between userspace and kernel. */ | 268 | /* Pointer to the page shared between userspace and kernel. */ |
| 269 | struct control_page * ctrl_page; | 269 | struct control_page * ctrl_page; |
| 270 | 270 | ||
| 271 | lt_t total_tardy; | 271 | #ifdef CONFIG_SCHED_TASK_TRACE |
| 272 | lt_t max_tardy; | ||
| 273 | unsigned int missed; | ||
| 274 | |||
| 275 | lt_t load; | 272 | lt_t load; |
| 276 | lt_t flush; | 273 | lt_t flush; |
| 277 | int load_work; | 274 | #endif |
| 278 | int flush_work; | ||
| 279 | 275 | ||
| 280 | lt_t max_exec_time; | ||
| 281 | lt_t tot_exec_time; | ||
| 282 | lt_t last_exec_time; | 276 | lt_t last_exec_time; |
| 283 | lt_t orig_cost; | 277 | lt_t orig_cost; |
| 278 | |||
| 284 | struct color_ctrl_page color_ctrl_page; | 279 | struct color_ctrl_page color_ctrl_page; |
| 285 | struct dgl_group_req *req; | 280 | struct dgl_group_req *req; |
| 286 | enum server_state state; | 281 | enum server_state state; |
diff --git a/include/litmus/sched_mc.h b/include/litmus/sched_mc.h index 70f57cfd2706..567603c5ffff 100644 --- a/include/litmus/sched_mc.h +++ b/include/litmus/sched_mc.h | |||
| @@ -55,6 +55,7 @@ struct ce_dom_data { | |||
| 55 | struct rt_event event; | 55 | struct rt_event event; |
| 56 | #else | 56 | #else |
| 57 | struct hrtimer timer; | 57 | struct hrtimer timer; |
| 58 | struct hrtimer_start_on_info timer_info; | ||
| 58 | #endif | 59 | #endif |
| 59 | }; | 60 | }; |
| 60 | 61 | ||
diff --git a/include/litmus/sched_trace.h b/include/litmus/sched_trace.h index 0580340d0170..40187826ef19 100644 --- a/include/litmus/sched_trace.h +++ b/include/litmus/sched_trace.h | |||
| @@ -51,18 +51,9 @@ struct st_switch_away_data { /* A process was switched away from on a given CPU. | |||
| 51 | u64 exec_time; | 51 | u64 exec_time; |
| 52 | }; | 52 | }; |
| 53 | 53 | ||
| 54 | /* changed: like everything */ | ||
| 55 | struct st_completion_data { /* A job completed. */ | 54 | struct st_completion_data { /* A job completed. */ |
| 56 | u32 exec; | 55 | u64 when; |
| 57 | u16 flush_work; | 56 | u64 load; |
| 58 | u16 load_work; | ||
| 59 | u32 flush; | ||
| 60 | u32 load; | ||
| 61 | /* u8 forced:1; /\* Set to 1 if job overran and kernel advanced to the */ | ||
| 62 | /* * next task automatically; set to 0 otherwise. */ | ||
| 63 | /* *\/ */ | ||
| 64 | /* u8 __uflags:7; */ | ||
| 65 | /* u8 __unused[7]; */ | ||
| 66 | }; | 57 | }; |
| 67 | 58 | ||
| 68 | struct st_block_data { /* A task blocks. */ | 59 | struct st_block_data { /* A task blocks. */ |
| @@ -86,19 +77,6 @@ struct st_sys_release_data { | |||
| 86 | u64 release; | 77 | u64 release; |
| 87 | }; | 78 | }; |
| 88 | 79 | ||
| 89 | /* changed: easy enough to remove */ | ||
| 90 | struct st_task_exit_data { | ||
| 91 | u64 avg_exec_time; | ||
| 92 | u64 max_exec_time; | ||
| 93 | }; | ||
| 94 | |||
| 95 | /* changed: calculate yoself */ | ||
| 96 | struct st_task_tardy_data { | ||
| 97 | u64 total_tardy; | ||
| 98 | u32 max_tardy; | ||
| 99 | u32 missed; | ||
| 100 | }; | ||
| 101 | |||
| 102 | #define DATA(x) struct st_ ## x ## _data x; | 80 | #define DATA(x) struct st_ ## x ## _data x; |
| 103 | 81 | ||
| 104 | typedef enum { | 82 | typedef enum { |
| @@ -113,9 +91,7 @@ typedef enum { | |||
| 113 | ST_BLOCK, | 91 | ST_BLOCK, |
| 114 | ST_RESUME, | 92 | ST_RESUME, |
| 115 | ST_ACTION, | 93 | ST_ACTION, |
| 116 | ST_SYS_RELEASE, | 94 | ST_SYS_RELEASE |
| 117 | ST_TASK_EXIT, | ||
| 118 | ST_TASK_TARDY, | ||
| 119 | } st_event_record_type_t; | 95 | } st_event_record_type_t; |
| 120 | 96 | ||
| 121 | struct st_event_record { | 97 | struct st_event_record { |
| @@ -134,8 +110,6 @@ struct st_event_record { | |||
| 134 | DATA(resume); | 110 | DATA(resume); |
| 135 | DATA(action); | 111 | DATA(action); |
| 136 | DATA(sys_release); | 112 | DATA(sys_release); |
| 137 | DATA(task_exit); | ||
| 138 | DATA(task_tardy); | ||
| 139 | } data; | 113 | } data; |
| 140 | }; | 114 | }; |
| 141 | 115 | ||
| @@ -177,11 +151,6 @@ feather_callback void do_sched_trace_action(unsigned long id, | |||
| 177 | unsigned long action); | 151 | unsigned long action); |
| 178 | feather_callback void do_sched_trace_sys_release(unsigned long id, | 152 | feather_callback void do_sched_trace_sys_release(unsigned long id, |
| 179 | lt_t* start); | 153 | lt_t* start); |
| 180 | feather_callback void do_sched_trace_task_exit(unsigned long id, | ||
| 181 | struct task_struct* task); | ||
| 182 | feather_callback void do_sched_trace_task_tardy(unsigned long id, | ||
| 183 | struct task_struct* task); | ||
| 184 | |||
| 185 | #endif | 154 | #endif |
| 186 | 155 | ||
| 187 | #else | 156 | #else |
| @@ -306,20 +275,6 @@ feather_callback void do_sched_trace_task_tardy(unsigned long id, | |||
| 306 | trace_litmus_sys_release(when); \ | 275 | trace_litmus_sys_release(when); \ |
| 307 | } while (0) | 276 | } while (0) |
| 308 | 277 | ||
| 309 | #define sched_trace_task_exit(t) \ | ||
| 310 | do { \ | ||
| 311 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 11, \ | ||
| 312 | do_sched_trace_task_exit, t); \ | ||
| 313 | trace_litmus_task_exit(t); \ | ||
| 314 | } while (0) | ||
| 315 | |||
| 316 | |||
| 317 | #define sched_trace_task_tardy(t) \ | ||
| 318 | do { \ | ||
| 319 | SCHED_TRACE(SCHED_TRACE_BASE_ID + 12, \ | ||
| 320 | do_sched_trace_task_tardy, t); \ | ||
| 321 | } while (0) | ||
| 322 | |||
| 323 | #define QT_START lt_t _qt_start = litmus_clock() | 278 | #define QT_START lt_t _qt_start = litmus_clock() |
| 324 | #define QT_END \ | 279 | #define QT_END \ |
| 325 | sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ | 280 | sched_trace_log_message("%d P%d [%s@%s:%d]: Took %llu\n\n", \ |
diff --git a/include/trace/events/litmus.h b/include/trace/events/litmus.h index | |||
