diff options
Diffstat (limited to 'kernel/sched_rt.c')
| -rw-r--r-- | kernel/sched_rt.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c index 4b87476a02d0..d0097a0634e5 100644 --- a/kernel/sched_rt.c +++ b/kernel/sched_rt.c | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | * Update the current task's runtime statistics. Skip current tasks that | 7 | * Update the current task's runtime statistics. Skip current tasks that |
| 8 | * are not in our scheduling class. | 8 | * are not in our scheduling class. |
| 9 | */ | 9 | */ |
| 10 | static inline void update_curr_rt(struct rq *rq) | 10 | static void update_curr_rt(struct rq *rq) |
| 11 | { | 11 | { |
| 12 | struct task_struct *curr = rq->curr; | 12 | struct task_struct *curr = rq->curr; |
| 13 | u64 delta_exec; | 13 | u64 delta_exec; |
| @@ -59,9 +59,9 @@ static void requeue_task_rt(struct rq *rq, struct task_struct *p) | |||
| 59 | } | 59 | } |
| 60 | 60 | ||
| 61 | static void | 61 | static void |
| 62 | yield_task_rt(struct rq *rq, struct task_struct *p) | 62 | yield_task_rt(struct rq *rq) |
| 63 | { | 63 | { |
| 64 | requeue_task_rt(rq, p); | 64 | requeue_task_rt(rq, rq->curr); |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | /* | 67 | /* |
| @@ -206,7 +206,7 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p) | |||
| 206 | if (--p->time_slice) | 206 | if (--p->time_slice) |
| 207 | return; | 207 | return; |
| 208 | 208 | ||
| 209 | p->time_slice = static_prio_timeslice(p->static_prio); | 209 | p->time_slice = DEF_TIMESLICE; |
| 210 | 210 | ||
| 211 | /* | 211 | /* |
| 212 | * Requeue to the end of queue if we are not the only element | 212 | * Requeue to the end of queue if we are not the only element |
| @@ -218,7 +218,15 @@ static void task_tick_rt(struct rq *rq, struct task_struct *p) | |||
| 218 | } | 218 | } |
| 219 | } | 219 | } |
| 220 | 220 | ||
| 221 | static struct sched_class rt_sched_class __read_mostly = { | 221 | static void set_curr_task_rt(struct rq *rq) |
| 222 | { | ||
| 223 | struct task_struct *p = rq->curr; | ||
| 224 | |||
| 225 | p->se.exec_start = rq->clock; | ||
| 226 | } | ||
| 227 | |||
| 228 | const struct sched_class rt_sched_class = { | ||
| 229 | .next = &fair_sched_class, | ||
| 222 | .enqueue_task = enqueue_task_rt, | 230 | .enqueue_task = enqueue_task_rt, |
| 223 | .dequeue_task = dequeue_task_rt, | 231 | .dequeue_task = dequeue_task_rt, |
| 224 | .yield_task = yield_task_rt, | 232 | .yield_task = yield_task_rt, |
| @@ -230,5 +238,6 @@ static struct sched_class rt_sched_class __read_mostly = { | |||
| 230 | 238 | ||
| 231 | .load_balance = load_balance_rt, | 239 | .load_balance = load_balance_rt, |
| 232 | 240 | ||
| 241 | .set_curr_task = set_curr_task_rt, | ||
| 233 | .task_tick = task_tick_rt, | 242 | .task_tick = task_tick_rt, |
| 234 | }; | 243 | }; |
