From 17fc54fba3f885951c1dcc5411efb06106ed955b Mon Sep 17 00:00:00 2001 From: Mihai Renea <mihairenea@llanberis.imp.fu-berlin.de> Date: Fri, 22 Mar 2019 14:40:42 +0100 Subject: [PATCH] please work --- kernel/sched/pb.c | 45 ------------------------------------------ kernel/sched/sched.h | 47 +++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/kernel/sched/pb.c b/kernel/sched/pb.c index 761266d3e11b..f124823b3bed 100644 --- a/kernel/sched/pb.c +++ b/kernel/sched/pb.c @@ -246,49 +246,4 @@ const struct sched_class pb_sched_class = { }; EXPORT_SYMBOL(pb_sched_class); -// used to determine the next mode of the PB-Scheduler -// This function is located in sched.h since pb.c and fair.c are using this function -inline int determine_next_mode_pb(struct rq *rq) -{ - int mode = PB_DISABLED_MODE; - struct pb_rq *pb = &(rq->pb); - if (pb->c_entry < pb->size) - { - // initial switch - if (pb->mode == PB_DISABLED_MODE && pb->is_initialized) - { - return PB_EXEC_MODE; - } - else - { - if (pb->mode == PB_EXEC_MODE) - { - //stay for n timer interrupts cycles in exec mode - /* - * Is the tick interrupt active in this moment? - */ - if(pb->count_pb_cycles > pb->n_pb_cycles){ - mode = PB_ADMIN_MODE; - pb->count_pb_cycles = 0; - }else{ - mode = PB_EXEC_MODE; - } - } - else if (pb->mode == PB_ADMIN_MODE) - { - //stay for n timer interrupt cylces in uall mode for admin tasks - /* - * Is the tick interrupt active in this moment? - */ - if(pb->count_admin_cycles > pb->n_admin_cycles){ - mode = PB_EXEC_MODE; - pb->count_admin_cycles = 0; - }else{ - mode = PB_ADMIN_MODE; - } - } - } - } - return mode; -} diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 16eeea7788f9..7c60deb1a910 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -551,7 +551,52 @@ struct pb_rq { }; int pb_init_rq(struct pb_init_struct *initstr, struct rq *rq); -inline int determine_next_mode_pb(struct rq *rq); +// used to determine the next mode of the PB-Scheduler +// This function is located in sched.h since pb.c and fair.c are using this function +static inline int determine_next_mode_pb(struct rq *rq) +{ + int mode = PB_DISABLED_MODE; + struct pb_rq *pb = &(rq->pb); + + if (pb->c_entry < pb->size) + { + // initial switch + if (pb->mode == PB_DISABLED_MODE && pb->is_initialized) + { + return PB_EXEC_MODE; + } + else + { + if (pb->mode == PB_EXEC_MODE) + { + //stay for n timer interrupts cycles in exec mode + /* + * Is the tick interrupt active in this moment? + */ + if(pb->count_pb_cycles > pb->n_pb_cycles){ + mode = PB_ADMIN_MODE; + pb->count_pb_cycles = 0; + }else{ + mode = PB_EXEC_MODE; + } + } + else if (pb->mode == PB_ADMIN_MODE) + { + //stay for n timer interrupt cylces in uall mode for admin tasks + /* + * Is the tick interrupt active in this moment? + */ + if(pb->count_admin_cycles > pb->n_admin_cycles){ + mode = PB_EXEC_MODE; + pb->count_admin_cycles = 0; + }else{ + mode = PB_ADMIN_MODE; + } + } + } + } + return mode; +} static inline int rt_bandwidth_enabled(void) { -- GitLab