aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched_fair.c
diff options
context:
space:
mode:
authorPeter Williams <pwil3058@bigpond.net.au>2009-09-20 21:31:53 -0400
committerIngo Molnar <mingo@elte.hu>2009-09-21 03:53:55 -0400
commit0d721ceadbeaa24d7f9dd41b3e5e29912327a7e1 (patch)
tree54c0c8dc201122483bdd7e8975103b07f6afd34b /kernel/sched_fair.c
parentcb5fd13f1178dee4302646b2890d884c380160e1 (diff)
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_fair.c')
-rw-r--r--kernel/sched_fair.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index 566e3bb78ed9..cd73738f0d5f 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1938,6 +1938,25 @@ static void moved_group_fair(struct task_struct *p)
1938} 1938}
1939#endif 1939#endif
1940 1940
1941unsigned int get_rr_interval_fair(struct task_struct *task)
1942{
1943 struct sched_entity *se = &task->se;
1944 unsigned long flags;
1945 struct rq *rq;
1946 unsigned int rr_interval = 0;
1947
1948 /*
1949 * Time slice is 0 for SCHED_OTHER tasks that are on an otherwise
1950 * idle runqueue:
1951 */
1952 rq = task_rq_lock(task, &flags);
1953 if (rq->cfs.load.weight)
1954 rr_interval = NS_TO_JIFFIES(sched_slice(&rq->cfs, se));
1955 task_rq_unlock(rq, &flags);
1956
1957 return rr_interval;
1958}
1959
1941/* 1960/*
1942 * All the scheduling class methods: 1961 * All the scheduling class methods:
1943 */ 1962 */
@@ -1966,6 +1985,8 @@ static const struct sched_class fair_sched_class = {
1966 .prio_changed = prio_changed_fair, 1985 .prio_changed = prio_changed_fair,
1967 .switched_to = switched_to_fair, 1986 .switched_to = switched_to_fair,
1968 1987
1988 .get_rr_interval = get_rr_interval_fair,
1989
1969#ifdef CONFIG_FAIR_GROUP_SCHED 1990#ifdef CONFIG_FAIR_GROUP_SCHED
1970 .moved_group = moved_group_fair, 1991 .moved_group = moved_group_fair,
1971#endif 1992#endif