aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/rt_param.h
diff options
context:
space:
mode:
authorBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-07 23:28:55 -0400
committerBjoern B. Brandenburg <bbb@cs.unc.edu>2007-10-07 23:28:55 -0400
commit1d88b6ae5ed253fbfd4568eb668e2ebd1ca01ac7 (patch)
tree15764ea7fbf450962773210ed95d60982f784710 /include/linux/rt_param.h
parent3a591b6003054e1d4e15c8dd7deefe3c8090192e (diff)
adpative: massive work on the optimizer
Not yet complete.
Diffstat (limited to 'include/linux/rt_param.h')
-rw-r--r--include/linux/rt_param.h24
1 files changed, 19 insertions, 5 deletions
diff --git a/include/linux/rt_param.h b/include/linux/rt_param.h
index 52737bb4dd..d14e2129b1 100644
--- a/include/linux/rt_param.h
+++ b/include/linux/rt_param.h
@@ -38,7 +38,6 @@ typedef struct {
38} service_level_t; 38} service_level_t;
39 39
40typedef struct { 40typedef struct {
41 fp_t error;
42 fp_t estimate; 41 fp_t estimate;
43 fp_t accumulated; 42 fp_t accumulated;
44} predictor_state_t; 43} predictor_state_t;
@@ -172,6 +171,15 @@ typedef struct task_rt_param {
172 */ 171 */
173 fp_t wt_y; 172 fp_t wt_y;
174 fp_t wt_slope; 173 fp_t wt_slope;
174
175 /* Adaptive support. Optimizer fields.
176 */
177 struct list_head opt_list;
178 fp_t opt_order;
179 fp_t opt_dw;
180 fp_t opt_nw;
181 unsigned int opt_level;
182 jiffie_t opt_change;
175} task_rt_param_t; 183} task_rt_param_t;
176 184
177/* Possible RT flags */ 185/* Possible RT flags */
@@ -192,9 +200,17 @@ typedef struct task_rt_param {
192#define set_exec_cost(t,e) (t)->rt_param.basic_params.exec_cost=(e) 200#define set_exec_cost(t,e) (t)->rt_param.basic_params.exec_cost=(e)
193#define get_partition(t) (t)->rt_param.basic_params.cpu 201#define get_partition(t) (t)->rt_param.basic_params.cpu
194#define get_deadline(t) ((t)->rt_param.times.deadline) 202#define get_deadline(t) ((t)->rt_param.times.deadline)
203#define get_last_release(t) ((t)->rt_param.times.last_release)
195#define get_class(t) ((t)->rt_param.basic_params.class) 204#define get_class(t) ((t)->rt_param.basic_params.class)
196 205
206#define is_active(t) \
207 (get_last_release(t) < jiffies && get_deadline(t) >= jiffies)
208
197#define get_est_weight(t) ((t)->rt_param.predictor_state.estimate) 209#define get_est_weight(t) ((t)->rt_param.predictor_state.estimate)
210#define get_sl(t, l) \
211 ((t)->rt_param.service_level[get_cur_sl(t)])
212#define get_cur_sl(t) ((t)->rt_param.cur_service_level)
213#define get_max_sl(t) ((t)->rt_param.no_service_levels - 1)
198 214
199#define is_realtime(t) ((t)->rt_param.is_realtime) 215#define is_realtime(t) ((t)->rt_param.is_realtime)
200#define is_subject_to_srp(t) ((t)->rt_param.subject_to_srp) 216#define is_subject_to_srp(t) ((t)->rt_param.subject_to_srp)
@@ -208,12 +224,8 @@ typedef struct task_rt_param {
208#define clear_rt_params(t) \ 224#define clear_rt_params(t) \
209memset(&(t)->rt_param,0, sizeof(struct task_rt_param)) 225memset(&(t)->rt_param,0, sizeof(struct task_rt_param))
210 226
211#define get_last_release_time(t) ((t)->rt_param.times.last_release)
212#define set_last_release_time(t,r) ((t)->rt_param.times.last_release=(r))
213
214#define get_release(t) ((t)->rt_param.times.release) 227#define get_release(t) ((t)->rt_param.times.release)
215#define set_release(t,r) ((t)->rt_param.times.release=(r)) 228#define set_release(t,r) ((t)->rt_param.times.release=(r))
216#define get_last_release(t) ((t)->rt_param.times.last_release)
217 229
218/* honor the flag that is set when scheduling is in progress 230/* honor the flag that is set when scheduling is in progress
219 * This is some dirty hack in Linux that creates race conditions in our code 231 * This is some dirty hack in Linux that creates race conditions in our code
@@ -253,4 +265,6 @@ memset(&(t)->rt_param,0, sizeof(struct task_rt_param))
253 } while(0); 265 } while(0);
254 266
255 267
268#define rt_list2task(p) list_entry(p, struct task_struct, rt_list)
269
256#endif 270#endif