aboutsummaryrefslogtreecommitdiffstats
path: root/include/litmus/rt_param.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/litmus/rt_param.h')
-rw-r--r--include/litmus/rt_param.h56
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 {
91struct control_page { 91struct 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
113typedef uint8_t color_t;
114#define COLORS_PER_CONTROL_PAGE (PAGE_SIZE / (2 * sizeof(color_t)))
115struct 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 {
100struct _rt_domain; 124struct _rt_domain;
101struct bheap_node; 125struct bheap_node;
102struct release_heap; 126struct release_heap;
127struct domain;
128struct rt_server;
129struct dgl_group_req;
103 130
104struct rt_job { 131struct 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
129struct pfair_param; 160struct pfair_param;
161#ifdef CONFIG_PLUGIN_MC
162struct 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 */