Skip to content
Snippets Groups Projects
Commit 17fc54fb authored by Mihai Renea's avatar Mihai Renea
Browse files

please work

parent 43c9e2b2
Branches
No related tags found
No related merge requests found
...@@ -246,49 +246,4 @@ const struct sched_class pb_sched_class = { ...@@ -246,49 +246,4 @@ const struct sched_class pb_sched_class = {
}; };
EXPORT_SYMBOL(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;
}
...@@ -551,7 +551,52 @@ struct pb_rq { ...@@ -551,7 +551,52 @@ struct pb_rq {
}; };
int pb_init_rq(struct pb_init_struct *initstr, struct rq *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) static inline int rt_bandwidth_enabled(void)
{ {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment