diff options
Diffstat (limited to 'include/litmus/rt_param.h')
-rw-r--r-- | include/litmus/rt_param.h | 56 |
1 files changed, 55 insertions, 1 deletions
diff --git a/include/litmus/rt_param.h b/include/litmus/rt_param.h index 20268190757f..a8c82eed5562 100644 --- a/include/litmus/rt_param.h +++ b/include/litmus/rt_param.h | |||
@@ -91,7 +91,31 @@ union np_flag { | |||
91 | struct control_page { | 91 | struct control_page { |
92 | volatile union np_flag sched; | 92 | volatile union np_flag sched; |
93 | 93 | ||
94 | /* to be extended */ | 94 | /* locking overhead tracing: time stamp prior to system call */ |
95 | uint64_t ts_syscall_start; /* Feather-Trace cycles */ | ||
96 | |||
97 | int colors_updated:8; | ||
98 | }; | ||
99 | |||
100 | #ifndef __KERNEL__ | ||
101 | /* | ||
102 | * XXX This is a terrible hack so liblitmus can use the PAGE_SIZE macro. | ||
103 | * We should fix liblitmus to do setup the page size at runtime. | ||
104 | */ | ||
105 | #define CACHE_LINE_SIZE 64 | ||
106 | #if (ARCH == x86_64) | ||
107 | #define PAGE_SIZE 4096 | ||
108 | #elif (ARCH == sparc64) | ||
109 | #define PAGE_SIZE 8192 | ||
110 | #endif | ||
111 | #endif /* ifndef __KERNEL__ */ | ||
112 | |||
113 | typedef uint8_t color_t; | ||
114 | #define COLORS_PER_CONTROL_PAGE (PAGE_SIZE / (2 * sizeof(color_t))) | ||
115 | struct color_ctrl_page { | ||
116 | color_t colors[COLORS_PER_CONTROL_PAGE]; | ||
117 | /* must be same type to guarantee equal array sizes */ | ||
118 | color_t pages[COLORS_PER_CONTROL_PAGE]; | ||
95 | }; | 119 | }; |
96 | 120 | ||
97 | /* don't export internal data structures to user space (liblitmus) */ | 121 | /* don't export internal data structures to user space (liblitmus) */ |
@@ -100,6 +124,9 @@ struct control_page { | |||
100 | struct _rt_domain; | 124 | struct _rt_domain; |
101 | struct bheap_node; | 125 | struct bheap_node; |
102 | struct release_heap; | 126 | struct release_heap; |
127 | struct domain; | ||
128 | struct rt_server; | ||
129 | struct dgl_group_req; | ||
103 | 130 | ||
104 | struct rt_job { | 131 | struct rt_job { |
105 | /* Time instant the the job was or will be released. */ | 132 | /* Time instant the the job was or will be released. */ |
@@ -107,6 +134,10 @@ struct rt_job { | |||
107 | /* What is the current deadline? */ | 134 | /* What is the current deadline? */ |
108 | lt_t deadline; | 135 | lt_t deadline; |
109 | 136 | ||
137 | lt_t real_release; | ||
138 | lt_t real_deadline; | ||
139 | unsigned int fake_job_no; | ||
140 | |||
110 | /* How much service has this job received so far? */ | 141 | /* How much service has this job received so far? */ |
111 | lt_t exec_time; | 142 | lt_t exec_time; |
112 | 143 | ||
@@ -127,6 +158,9 @@ struct rt_job { | |||
127 | }; | 158 | }; |
128 | 159 | ||
129 | struct pfair_param; | 160 | struct pfair_param; |
161 | #ifdef CONFIG_PLUGIN_MC | ||
162 | struct mc_data; | ||
163 | #endif | ||
130 | 164 | ||
131 | /* RT task parameters for scheduling extensions | 165 | /* RT task parameters for scheduling extensions |
132 | * These parameters are inherited during clone and therefore must | 166 | * These parameters are inherited during clone and therefore must |
@@ -142,6 +176,8 @@ struct rt_param { | |||
142 | /* is the task present? (true if it can be scheduled) */ | 176 | /* is the task present? (true if it can be scheduled) */ |
143 | unsigned int present:1; | 177 | unsigned int present:1; |
144 | 178 | ||
179 | unsigned int is_server:1; | ||
180 | |||
145 | #ifdef CONFIG_LITMUS_LOCKING | 181 | #ifdef CONFIG_LITMUS_LOCKING |
146 | /* Is the task being priority-boosted by a locking protocol? */ | 182 | /* Is the task being priority-boosted by a locking protocol? */ |
147 | unsigned int priority_boosted:1; | 183 | unsigned int priority_boosted:1; |
@@ -149,6 +185,17 @@ struct rt_param { | |||
149 | lt_t boost_start_time; | 185 | lt_t boost_start_time; |
150 | #endif | 186 | #endif |
151 | 187 | ||
188 | #ifdef CONFIG_PLUGIN_MC | ||
189 | /* mixed criticality specific data */ | ||
190 | struct mc_data *mc_data; | ||
191 | #endif | ||
192 | #ifdef CONFIG_MERGE_TIMERS | ||
193 | struct rt_event *event; | ||
194 | #endif | ||
195 | |||
196 | struct rt_server *server; | ||
197 | |||
198 | |||
152 | /* user controlled parameters */ | 199 | /* user controlled parameters */ |
153 | struct rt_task task_params; | 200 | struct rt_task task_params; |
154 | 201 | ||
@@ -203,6 +250,9 @@ struct rt_param { | |||
203 | int old_policy; | 250 | int old_policy; |
204 | int old_prio; | 251 | int old_prio; |
205 | 252 | ||
253 | /* TODO: rename */ | ||
254 | struct domain *_domain; | ||
255 | |||
206 | /* ready queue for this task */ | 256 | /* ready queue for this task */ |
207 | struct _rt_domain* domain; | 257 | struct _rt_domain* domain; |
208 | 258 | ||
@@ -229,8 +279,12 @@ struct rt_param { | |||
229 | lt_t total_tardy; | 279 | lt_t total_tardy; |
230 | lt_t max_tardy; | 280 | lt_t max_tardy; |
231 | unsigned int missed; | 281 | unsigned int missed; |
282 | |||
232 | lt_t max_exec_time; | 283 | lt_t max_exec_time; |
233 | lt_t tot_exec_time; | 284 | lt_t tot_exec_time; |
285 | lt_t last_exec_time; | ||
286 | struct color_ctrl_page *color_ctrl_page; | ||
287 | struct dgl_group_req *req; | ||
234 | }; | 288 | }; |
235 | 289 | ||
236 | /* Possible RT flags */ | 290 | /* Possible RT flags */ |