diff options
author | Peter Zijlstra <a.p.zijlstra@chello.nl> | 2008-01-25 15:08:30 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2008-01-25 15:08:30 -0500 |
commit | 6f505b16425a51270058e4a93441fe64de3dd435 (patch) | |
tree | be21e711d93bc4d088b97c4a4f585a5044dbaa7d /kernel/fork.c | |
parent | fa85ae2418e6843953107cd6a06f645752829bc0 (diff) |
sched: rt group scheduling
Extend group scheduling to also cover the realtime classes. It uses the time
limiting introduced by the previous patch to allow multiple realtime groups.
The hard time limit is required to keep behaviour deterministic.
The algorithms used make the realtime scheduler O(tg), linear scaling wrt the
number of task groups. This is the worst case behaviour I can't seem to get out
of, the avg. case of the algorithms can be improved, I focused on correctness
and worst case.
[ akpm@linux-foundation.org: move side-effects out of BUG_ON(). ]
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/fork.c')
-rw-r--r-- | kernel/fork.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/kernel/fork.c b/kernel/fork.c index 9f8ef32cbc7a..0c969f4fade0 100644 --- a/kernel/fork.c +++ b/kernel/fork.c | |||
@@ -1246,7 +1246,7 @@ static struct task_struct *copy_process(unsigned long clone_flags, | |||
1246 | * parent's CPU). This avoids alot of nasty races. | 1246 | * parent's CPU). This avoids alot of nasty races. |
1247 | */ | 1247 | */ |
1248 | p->cpus_allowed = current->cpus_allowed; | 1248 | p->cpus_allowed = current->cpus_allowed; |
1249 | p->nr_cpus_allowed = current->nr_cpus_allowed; | 1249 | p->rt.nr_cpus_allowed = current->rt.nr_cpus_allowed; |
1250 | if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed) || | 1250 | if (unlikely(!cpu_isset(task_cpu(p), p->cpus_allowed) || |
1251 | !cpu_online(task_cpu(p)))) | 1251 | !cpu_online(task_cpu(p)))) |
1252 | set_task_cpu(p, smp_processor_id()); | 1252 | set_task_cpu(p, smp_processor_id()); |