From e82bc71470695e6a8a319962737b4abff85bf0c6 Mon Sep 17 00:00:00 2001 From: Bjoern Brandenburg Date: Sun, 9 Aug 2015 13:18:50 +0200 Subject: Hook into fork(), exec(), and exit() Allow LITMUS^RT to do some work when a process is created or terminated. --- kernel/exit.c | 4 ++++ kernel/fork.c | 9 +++++++++ 2 files changed, 13 insertions(+) (limited to 'kernel') diff --git a/kernel/exit.c b/kernel/exit.c index 22fcc05dec40..a27a04c4fa35 100644 --- a/kernel/exit.c +++ b/kernel/exit.c @@ -61,6 +61,8 @@ static void exit_mm(struct task_struct *tsk); +extern void exit_od_table(struct task_struct *t); + static void __unhash_process(struct task_struct *p, bool group_dead) { nr_threads--; @@ -727,6 +729,8 @@ void do_exit(long code) tty_audit_exit(); audit_free(tsk); + exit_od_table(tsk); + tsk->exit_code = code; taskstats_exit(tsk, group_dead); diff --git a/kernel/fork.c b/kernel/fork.c index 03c1eaaa6ef5..16b6ca38856e 100644 --- a/kernel/fork.c +++ b/kernel/fork.c @@ -85,6 +85,9 @@ #include +#include +#include + #define CREATE_TRACE_POINTS #include @@ -253,6 +256,9 @@ void __put_task_struct(struct task_struct *tsk) task_numa_free(tsk); security_task_free(tsk); + + exit_litmus(tsk); + exit_creds(tsk); delayacct_tsk_free(tsk); put_signal_struct(tsk->signal); @@ -355,6 +361,9 @@ static struct task_struct *dup_task_struct(struct task_struct *orig) tsk->seccomp.filter = NULL; #endif + /* Don't let the new task be a real-time task. */ + litmus_fork(tsk); + setup_thread_stack(tsk, orig); clear_user_return_notifier(tsk); clear_tsk_need_resched(tsk); -- cgit v1.2.2