Merge /spare/repo/linux-2.6 into upstream
[sfrench/cifs-2.6.git] / kernel / exit.c
index 6664c084783d49c0a80faf22f5b84fad6015fe0b..dba194a8d41619d689d4e53f9819bb51583cb72c 100644 (file)
@@ -25,6 +25,8 @@
 #include <linux/mount.h>
 #include <linux/proc_fs.h>
 #include <linux/mempolicy.h>
+#include <linux/taskstats_kern.h>
+#include <linux/delayacct.h>
 #include <linux/cpuset.h>
 #include <linux/syscalls.h>
 #include <linux/signal.h>
@@ -843,7 +845,9 @@ static void exit_notify(struct task_struct *tsk)
 fastcall NORET_TYPE void do_exit(long code)
 {
        struct task_struct *tsk = current;
+       struct taskstats *tidstats;
        int group_dead;
+       unsigned int mycpu;
 
        profile_task_exit(tsk);
 
@@ -881,6 +885,8 @@ fastcall NORET_TYPE void do_exit(long code)
                                current->comm, current->pid,
                                preempt_count());
 
+       taskstats_exit_alloc(&tidstats, &mycpu);
+
        acct_update_integrals(tsk);
        if (tsk->mm) {
                update_hiwater_rss(tsk->mm);
@@ -900,6 +906,10 @@ fastcall NORET_TYPE void do_exit(long code)
 #endif
        if (unlikely(tsk->audit_context))
                audit_free(tsk);
+       taskstats_exit_send(tsk, tidstats, group_dead, mycpu);
+       taskstats_exit_free(tidstats);
+       delayacct_tsk_exit(tsk);
+
        exit_mm(tsk);
 
        if (group_dead)