diff options
| author | Bjoern Brandenburg <bbb@mpi-sws.org> | 2015-08-09 07:18:54 -0400 |
|---|---|---|
| committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2015-08-09 07:20:33 -0400 |
| commit | 4410877f28d1a20b5c98dd153de78c8342ac76f3 (patch) | |
| tree | a16bed662be301196d94c71398e03f86f624e353 /kernel | |
| parent | 7ee05297e8dd04b4b0bbd34966f9d235211ada2b (diff) | |
Hook into kernel/exit.c to force exiting RT tasks into best-effort mode
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/exit.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/exit.c b/kernel/exit.c index a27a04c4fa35..07e491702a70 100644 --- a/kernel/exit.c +++ b/kernel/exit.c | |||
| @@ -61,6 +61,8 @@ | |||
| 61 | 61 | ||
| 62 | static void exit_mm(struct task_struct *tsk); | 62 | static void exit_mm(struct task_struct *tsk); |
| 63 | 63 | ||
| 64 | #include <litmus/litmus.h> | ||
| 65 | |||
| 64 | extern void exit_od_table(struct task_struct *t); | 66 | extern void exit_od_table(struct task_struct *t); |
| 65 | 67 | ||
| 66 | static void __unhash_process(struct task_struct *p, bool group_dead) | 68 | static void __unhash_process(struct task_struct *p, bool group_dead) |
| @@ -667,6 +669,15 @@ void do_exit(long code) | |||
| 667 | if (unlikely(!tsk->pid)) | 669 | if (unlikely(!tsk->pid)) |
| 668 | panic("Attempted to kill the idle task!"); | 670 | panic("Attempted to kill the idle task!"); |
| 669 | 671 | ||
| 672 | if (unlikely(is_realtime(tsk))) { | ||
| 673 | /* We would like the task to be polite | ||
| 674 | * and transition out of RT mode first. | ||
| 675 | * Let's give it a little help. | ||
| 676 | */ | ||
| 677 | litmus_do_exit(tsk); | ||
| 678 | BUG_ON(is_realtime(tsk)); | ||
| 679 | } | ||
| 680 | |||
| 670 | /* | 681 | /* |
| 671 | * If do_exit is called because this processes oopsed, it's possible | 682 | * If do_exit is called because this processes oopsed, it's possible |
| 672 | * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before | 683 | * that get_fs() was left as KERNEL_DS, so reset it to USER_DS before |
