about summary refs log tree commit diff
path: root/nptl/sysdeps/unix/sysv/linux/fork.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-04-10 16:46:27 +0000
committerUlrich Drepper <drepper@redhat.com>2003-04-10 16:46:27 +0000
commit88ff4759acdc413c96b038036823ac6dc677c667 (patch)
tree8d813b78336d828b2661c4d4a4bfd78834f2715a /nptl/sysdeps/unix/sysv/linux/fork.c
parentb2041097f675c9adf64ed331c221ac903e6e9790 (diff)
downloadglibc-88ff4759acdc413c96b038036823ac6dc677c667.tar.gz
glibc-88ff4759acdc413c96b038036823ac6dc677c667.tar.xz
glibc-88ff4759acdc413c96b038036823ac6dc677c667.zip
Update.
2003-04-10  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/unix/sysv/linux/fork.c (__libc_fork): Reset CPU clocks
	in child.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/fork.c')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/fork.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/fork.c b/nptl/sysdeps/unix/sysv/linux/fork.c
index cbe9ccbe1b..94d8995205 100644
--- a/nptl/sysdeps/unix/sysv/linux/fork.c
+++ b/nptl/sysdeps/unix/sysv/linux/fork.c
@@ -17,6 +17,7 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#include <assert.h>
 #include <stdlib.h>
 #include <unistd.h>
 #include <sys/types.h>
@@ -24,8 +25,9 @@
 #include <libio/libioP.h>
 #include <tls.h>
 #include "fork.h"
+#include <hp-timing.h>
+#include <ldsodefs.h>
 #include <bits/stdio-lock.h>
-#include <assert.h>
 
 
 unsigned long int *__fork_generation_pointer;
@@ -83,11 +85,21 @@ __libc_fork (void)
 
   if (pid == 0)
     {
-      assert (THREAD_GETMEM (THREAD_SELF, tid) != ppid);
+      struct pthread *self = THREAD_SELF;
+
+      assert (THREAD_GETMEM (self, tid) != ppid);
 
       if (__fork_generation_pointer != NULL)
 	*__fork_generation_pointer += 4;
 
+#if HP_TIMING_AVAIL
+      /* The CPU clock of the thread and process have to be set to zero.  */
+      hp_timing_t now;
+      HP_TIMING_NOW (now);
+      THREAD_SETMEM (self, cpuclock_offset, now);
+      GL(dl_cpuclock_offset) = now;
+#endif
+
       /* Reset the file list.  These are recursive mutexes.  */
       fresetlockfiles ();