<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">
From: Mikael Pettersson &lt;mikpe@csd.uu.se&gt;

- s/perfctr_copy_thread(&amp;p-&gt;thread)/perfctr_copy_task(p, regs)/g
  Needed to access to the task struct (for setting owner in new
  perfctr state) and for accessing regs (for checking user_mode(regs))
- Add perfctr_release_task() callback in kernel/exit.c

Signed-off-by: Mikael Pettersson &lt;mikpe@csd.uu.se&gt;
Signed-off-by: Andrew Morton &lt;akpm@osdl.org&gt;
---

 25-akpm/arch/i386/kernel/process.c   |    2 +-
 25-akpm/arch/ppc/kernel/process.c    |    2 +-
 25-akpm/arch/x86_64/kernel/process.c |    2 +-
 25-akpm/kernel/exit.c                |    2 ++
 4 files changed, 5 insertions(+), 3 deletions(-)

diff -puN arch/i386/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/i386/kernel/process.c
--- 25/arch/i386/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-07-26 15:51:05.617532664 -0700
+++ 25-akpm/arch/i386/kernel/process.c	2004-07-26 15:51:05.626531296 -0700
@@ -368,7 +368,7 @@ int copy_thread(int nr, unsigned long cl
 	savesegment(fs,p-&gt;thread.fs);
 	savesegment(gs,p-&gt;thread.gs);
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	tsk = current;
 	if (unlikely(NULL != tsk-&gt;thread.io_bitmap_ptr)) {
diff -puN arch/ppc/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/ppc/kernel/process.c
--- 25/arch/ppc/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-07-26 15:51:05.618532512 -0700
+++ 25-akpm/arch/ppc/kernel/process.c	2004-07-26 15:51:05.626531296 -0700
@@ -464,7 +464,7 @@ copy_thread(int nr, unsigned long clone_
 
 	p-&gt;thread.last_syscall = -1;
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	return 0;
 }
diff -puN arch/x86_64/kernel/process.c~perfctr-inheritance-2-3-kernel-updates arch/x86_64/kernel/process.c
--- 25/arch/x86_64/kernel/process.c~perfctr-inheritance-2-3-kernel-updates	2004-07-26 15:51:05.620532208 -0700
+++ 25-akpm/arch/x86_64/kernel/process.c	2004-07-26 15:51:05.627531144 -0700
@@ -367,7 +367,7 @@ int copy_thread(int nr, unsigned long cl
 	asm("movl %%es,%0" : "=m" (p-&gt;thread.es));
 	asm("movl %%ds,%0" : "=m" (p-&gt;thread.ds));
 
-	perfctr_copy_thread(&amp;p-&gt;thread);
+	perfctr_copy_task(p, regs);
 
 	if (unlikely(me-&gt;thread.io_bitmap_ptr != NULL)) { 
 		p-&gt;thread.io_bitmap_ptr = kmalloc(IO_BITMAP_BYTES, GFP_KERNEL);
diff -puN kernel/exit.c~perfctr-inheritance-2-3-kernel-updates kernel/exit.c
--- 25/kernel/exit.c~perfctr-inheritance-2-3-kernel-updates	2004-07-26 15:51:05.621532056 -0700
+++ 25-akpm/kernel/exit.c	2004-07-26 15:51:05.628530992 -0700
@@ -23,6 +23,7 @@
 #include &lt;linux/mount.h&gt;
 #include &lt;linux/proc_fs.h&gt;
 #include &lt;linux/mempolicy.h&gt;
+#include &lt;linux/perfctr.h&gt;
 
 #include &lt;asm/uaccess.h&gt;
 #include &lt;asm/unistd.h&gt;
@@ -96,6 +97,7 @@ repeat: 
 	p-&gt;parent-&gt;cmaj_flt += p-&gt;maj_flt + p-&gt;cmaj_flt;
 	p-&gt;parent-&gt;cnvcsw += p-&gt;nvcsw + p-&gt;cnvcsw;
 	p-&gt;parent-&gt;cnivcsw += p-&gt;nivcsw + p-&gt;cnivcsw;
+	perfctr_release_task(p);
 	sched_exit(p);
 	write_unlock_irq(&amp;tasklist_lock);
 	spin_unlock(&amp;p-&gt;proc_lock);
_
</pre></body></html>