diff options
| author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-07 23:28:55 -0400 |
|---|---|---|
| committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2007-10-07 23:28:55 -0400 |
| commit | 1d88b6ae5ed253fbfd4568eb668e2ebd1ca01ac7 (patch) | |
| tree | 15764ea7fbf450962773210ed95d60982f784710 /include/linux/rt_param.h | |
| parent | 3a591b6003054e1d4e15c8dd7deefe3c8090192e (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.h | 24 |
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 | ||
| 40 | typedef struct { | 40 | typedef 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) \ |
| 209 | memset(&(t)->rt_param,0, sizeof(struct task_rt_param)) | 225 | memset(&(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 |
