diff options
author | Peter Williams <pwil3058@bigpond.net.au> | 2009-09-21 01:31:53 +0000 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-09-21 09:53:55 +0200 |
commit | 0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1 (patch) | |
tree | 54c0c8dc201122483bdd7e8975103b07f6afd34b /kernel/sched.c | |
parent | cb5fd13f1178dee4302646b2890d884c380160e1 (diff) | |
download | op-kernel-dev-0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1.zip op-kernel-dev-0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1.tar.gz |
sched: Simplify sys_sched_rr_get_interval() system call
By removing the need for it to know details of scheduling classes.
This allows PlugSched to define orthogonal scheduling classes.
Signed-off-by: Peter Williams <pwil3058@bigpond.net.au>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
LKML-Reference: <06d1b89ee15a0eef82d7.1253496713@mudlark.pw.nest>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched.c')
-rw-r--r-- | kernel/sched.c | 17 |
1 files changed, 1 insertions, 16 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 1b900fb..830967e 100644 --- a/kernel/sched.c +++ b/kernel/sched.c @@ -6819,23 +6819,8 @@ SYSCALL_DEFINE2(sched_rr_get_interval, pid_t, pid, if (retval) goto out_unlock; - /* - * Time slice is 0 for SCHED_FIFO tasks and for SCHED_OTHER - * tasks that are on an otherwise idle runqueue: - */ - time_slice = 0; - if (p->policy == SCHED_RR) { - time_slice = DEF_TIMESLICE; - } else if (p->policy != SCHED_FIFO) { - struct sched_entity *se = &p->se; - unsigned long flags; - struct rq *rq; + time_slice = p->sched_class->get_rr_interval(p); - rq = task_rq_lock(p, &flags); - if (rq->cfs.load.weight) - time_slice = NS_TO_JIFFIES(sched_slice(&rq->cfs, se)); - task_rq_unlock(rq, &flags); - } read_unlock(&tasklist_lock); jiffies_to_timespec(time_slice, &t); retval = copy_to_user(interval, &t, sizeof(t)) ? -EFAULT : 0; |