Update.
authorUlrich Drepper <drepper@redhat.com>
Mon, 3 Mar 2003 22:02:13 +0000 (22:02 +0000)
committerUlrich Drepper <drepper@redhat.com>
Mon, 3 Mar 2003 22:02:13 +0000 (22:02 +0000)
2003-03-03  Ulrich Drepper  <drepper@redhat.com>

* include/sched.h (__clone2): Use ... instead of adding all the
new parameters.

ChangeLog
include/sched.h
nptl/ChangeLog
nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c
nptl/sysdeps/unix/sysv/linux/register-atfork.c
sysdeps/unix/sysv/linux/ia64/clone2.S

index 51f56a3..00cd351 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,10 +1,14 @@
+2003-03-03  Ulrich Drepper  <drepper@redhat.com>
+
+       * include/sched.h (__clone2): Use ... instead of adding all the
+       new parameters.
+
 2003-03-03  Roland McGrath  <roland@redhat.com>
 
        * elf/dl-load.c (struct filebuf): Fix typo in last change.
 
        * sysdeps/powerpc/powerpc32/elf/configure.in: Don't define
        PI_STATIC_AND_HIDDEN.
-       * sysdeps/powerpc/powerpc32/elf/configure: Regenerated.
 
 2003-03-03  Ian Wienand  <ianw@gelato.unsw.edu.au>
 
index d6cd36f..4a142c6 100644 (file)
@@ -15,11 +15,8 @@ extern int __sched_get_priority_min (int __algorithm);
 extern int __sched_rr_get_interval (__pid_t __pid, struct timespec *__t);
 
 /* These are Linux specific.  */
-struct user_desc;
 extern int __clone (int (*__fn) (void *__arg), void *__child_stack,
                    int __flags, void *__arg, ...);
 extern int __clone2 (int (*__fn) (void *__arg), void *__child_stack_base,
-                    size_t __child_stack_size, int __flags, void *__arg,
-                    __pid_t *__child_tid, __pid_t *__parent_tid,
-                    struct user_desc *__tls);
+                    size_t __child_stack_size, int __flags, void *__arg, ...);
 #endif
index 740d6ff..98d312c 100644 (file)
@@ -1,3 +1,11 @@
+2003-03-03  Ulrich Drepper  <drepper@redhat.com>
+
+       * sysdeps/unix/sysv/linux/libc_pthread_init.c
+       (__pthread_child_handler): Renamed from pthread_child_handler,
+       exported, and marked hidden.  Change all users.
+       * sysdeps/unix/sysv/linux/register-atfork.c (free_mem): Do not
+       free __pthread_child_handler from child list.
+
 2003-03-03  Martin Schwidefsky  <schwidefsky@de.ibm.com>
 
        * atomic.h (atomic_exchange_and_add): Return newval, not oldval.
index fdda78b..06cca36 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
 
@@ -27,7 +27,7 @@
 #include <bits/libc-lock.h>
 
 
-static struct fork_handler pthread_child_handler;
+struct fork_handler __pthread_child_handler attribute_hidden;
 
 
 void
@@ -40,10 +40,10 @@ __libc_pthread_init (ptr, reclaim, functions)
   __fork_generation_pointer = ptr;
 
   /* Called by a child after fork.  */
-  pthread_child_handler.handler = reclaim;
+  __pthread_child_handler.handler = reclaim;
 
   /* The fork handler needed by libpthread.  */
-  list_add_tail (&pthread_child_handler.list, &__fork_child_list);
+  list_add_tail (&__pthread_child_handler.list, &__fork_child_list);
 
 #ifdef SHARED
   /* We copy the content of the variable pointed to by the FUNCTIONS
index 7047d6a..2f63c78 100644 (file)
 #include "fork.h"
 
 
+/* Defined in libc_pthread_init.c.  */
+extern struct fork_handler __pthread_child_handler attribute_hidden;
+
+
 int
 __register_atfork (prepare, parent, child, dso_handle)
      void (*prepare) (void);
@@ -114,7 +118,9 @@ libc_freeres_fn (free_mem)
     {
       list_del (runp);
 
-      free (list_entry (runp, struct fork_handler, list));
+      void *p = list_entry (runp, struct fork_handler, list);
+      if (p != (void *) &__pthread_child_handler)
+       free (p);
     }
 
   /* Release the lock.  */
index 2a65938..f35c670 100644 (file)
@@ -23,8 +23,7 @@
 
 /* int  __clone2(int (*fn) (void *arg), void *child_stack_base,        */
 /*              size_t child_stack_size, int flags, void *arg,         */
-/*              pid_t *child_tid, pid_t *parent_tid,                   */
-/*              struct user_desc *tls) */
+/*              pid_t *child_tid, pid_t *parent_tid, void *tls) */
 
 ENTRY(__clone2)
        alloc r2=ar.pfs,8,2,6,0