diff options
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | include/sched.h | 5 | ||||
-rw-r--r-- | nptl/ChangeLog | 8 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c | 8 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/register-atfork.c | 8 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/ia64/clone2.S | 3 |
6 files changed, 26 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog index 51f56a33cb..00cd3519d4 100644 --- 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> diff --git a/include/sched.h b/include/sched.h index d6cd36f01d..4a142c69af 100644 --- a/include/sched.h +++ b/include/sched.h @@ -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 diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 740d6ff1f8..98d312cf88 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -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. diff --git a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c index fdda78bc20..06cca367b3 100644 --- a/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c +++ b/nptl/sysdeps/unix/sysv/linux/libc_pthread_init.c @@ -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 diff --git a/nptl/sysdeps/unix/sysv/linux/register-atfork.c b/nptl/sysdeps/unix/sysv/linux/register-atfork.c index 7047d6a72a..2f63c781ab 100644 --- a/nptl/sysdeps/unix/sysv/linux/register-atfork.c +++ b/nptl/sysdeps/unix/sysv/linux/register-atfork.c @@ -22,6 +22,10 @@ #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. */ diff --git a/sysdeps/unix/sysv/linux/ia64/clone2.S b/sysdeps/unix/sysv/linux/ia64/clone2.S index 2a6593889b..f35c6703f5 100644 --- a/sysdeps/unix/sysv/linux/ia64/clone2.S +++ b/sysdeps/unix/sysv/linux/ia64/clone2.S @@ -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 |