diff options
| author | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-02 11:14:12 -0400 |
|---|---|---|
| committer | Bjoern B. Brandenburg <bbb@cs.unc.edu> | 2008-05-02 11:14:12 -0400 |
| commit | 9ba6aa51b390e7f1ec301bbf2f064aa9937f6e7f (patch) | |
| tree | 13f8660962fe555cea69bd9e32ba5521cfdbc870 /kernel | |
| parent | 85ea929e767680261d154aebf8b29dad95839d7c (diff) | |
LITMUS: don't let real-time tasks migrate by themselves
A proper real-time migration works as follows:
1) transition to best-effort task
2) migrate to target CPU
3) update real-time parameters
4) transition to real-time task
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sched.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/kernel/sched.c b/kernel/sched.c index 00097dea89..7268034c88 100644 --- a/kernel/sched.c +++ b/kernel/sched.c | |||
| @@ -4536,10 +4536,11 @@ long sched_setaffinity(pid_t pid, cpumask_t new_mask) | |||
| 4536 | read_lock(&tasklist_lock); | 4536 | read_lock(&tasklist_lock); |
| 4537 | 4537 | ||
| 4538 | p = find_process_by_pid(pid); | 4538 | p = find_process_by_pid(pid); |
| 4539 | if (!p) { | 4539 | if (!p || is_realtime(p)) { |
| 4540 | /* LITMUS tasks don't get to do this, transition to BE first */ | ||
| 4540 | read_unlock(&tasklist_lock); | 4541 | read_unlock(&tasklist_lock); |
| 4541 | mutex_unlock(&sched_hotcpu_mutex); | 4542 | mutex_unlock(&sched_hotcpu_mutex); |
| 4542 | return -ESRCH; | 4543 | return p ? -EPERM : -ESRCH; |
| 4543 | } | 4544 | } |
| 4544 | 4545 | ||
| 4545 | /* | 4546 | /* |
