From 1d88b6ae5ed253fbfd4568eb668e2ebd1ca01ac7 Mon Sep 17 00:00:00 2001 From: "Bjoern B. Brandenburg" Date: Sun, 7 Oct 2007 23:28:55 -0400 Subject: adpative: massive work on the optimizer Not yet complete. --- include/linux/rt_param.h | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) (limited to 'include/linux/rt_param.h') 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 { } service_level_t; typedef struct { - fp_t error; fp_t estimate; fp_t accumulated; } predictor_state_t; @@ -172,6 +171,15 @@ typedef struct task_rt_param { */ fp_t wt_y; fp_t wt_slope; + + /* Adaptive support. Optimizer fields. + */ + struct list_head opt_list; + fp_t opt_order; + fp_t opt_dw; + fp_t opt_nw; + unsigned int opt_level; + jiffie_t opt_change; } task_rt_param_t; /* Possible RT flags */ @@ -192,9 +200,17 @@ typedef struct task_rt_param { #define set_exec_cost(t,e) (t)->rt_param.basic_params.exec_cost=(e) #define get_partition(t) (t)->rt_param.basic_params.cpu #define get_deadline(t) ((t)->rt_param.times.deadline) +#define get_last_release(t) ((t)->rt_param.times.last_release) #define get_class(t) ((t)->rt_param.basic_params.class) +#define is_active(t) \ + (get_last_release(t) < jiffies && get_deadline(t) >= jiffies) + #define get_est_weight(t) ((t)->rt_param.predictor_state.estimate) +#define get_sl(t, l) \ + ((t)->rt_param.service_level[get_cur_sl(t)]) +#define get_cur_sl(t) ((t)->rt_param.cur_service_level) +#define get_max_sl(t) ((t)->rt_param.no_service_levels - 1) #define is_realtime(t) ((t)->rt_param.is_realtime) #define is_subject_to_srp(t) ((t)->rt_param.subject_to_srp) @@ -208,12 +224,8 @@ typedef struct task_rt_param { #define clear_rt_params(t) \ memset(&(t)->rt_param,0, sizeof(struct task_rt_param)) -#define get_last_release_time(t) ((t)->rt_param.times.last_release) -#define set_last_release_time(t,r) ((t)->rt_param.times.last_release=(r)) - #define get_release(t) ((t)->rt_param.times.release) #define set_release(t,r) ((t)->rt_param.times.release=(r)) -#define get_last_release(t) ((t)->rt_param.times.last_release) /* honor the flag that is set when scheduling is in progress * 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)) } while(0); +#define rt_list2task(p) list_entry(p, struct task_struct, rt_list) + #endif -- cgit v1.2.2