
1: /* Copyright (C) 2002, 2006 Free Software Foundation, Inc. 2: This file is part of the GNU C Library. 3: Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. 4: 5: The GNU C Library is free software; you can redistribute it and/or 6: modify it under the terms of the GNU Lesser General Public 7: License as published by the Free Software Foundation; either 8: version 2.1 of the License, or (at your option) any later version. 9: 10: In addition to the permissions in the GNU Lesser General Public 11: License, the Free Software Foundation gives you unlimited 12: permission to link the compiled version of this file with other 13: programs, and to distribute those programs without any restriction 14: coming from the use of this file. (The GNU Lesser General Public 15: License restrictions do apply in other respects; for example, they 16: cover modification of the file, and distribution when not linked 17: into another program.) 18: 19: Note that people who make modified versions of this file are not 20: obligated to grant this special exception for their modified 21: versions; it is their choice whether to do so. The GNU Lesser 22: General Public License gives permission to release a modified 23: version without this exception; this exception also makes it 24: possible to release a modified version which carries forward this 25: exception. 26: 27: The GNU C Library is distributed in the hope that it will be useful, 28: but WITHOUT ANY WARRANTY; without even the implied warranty of 29: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 30: Lesser General Public License for more details. 31: 32: You should have received a copy of the GNU Lesser General Public 33: License along with the GNU C Library; if not, write to the Free 34: Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 35: 02111-1307 USA. */ 36: 37: #include "pthreadP.h" 38: #include <fork.h> 39: 40: /* This is defined by newer gcc version unique for each module. */ 41: extern void *__dso_handle __attribute__ ((__weak__, 42: __visibility__ ("hidden"))); 43: 44: 45: /* Hide the symbol so that no definition but the one locally in the 46: executable or DSO is used. */ 47: int 48: #ifndef __pthread_atfork 49: /* Don't mark the compatibility function as hidden. */ 50: attribute_hidden 51: #endif 52: __pthread_atfork (prepare, parent, child) 53: void (*prepare) (void); 54: void (*parent) (void); 55: void (*child) (void); 56: { 57: return __register_atfork (prepare, parent, child, 58: &__dso_handle == NULL ? NULL : __dso_handle); 59: } 60: #ifndef __pthread_atfork 61: extern int pthread_atfork (void (*prepare) (void), void (*parent) (void), 62: void (*child) (void)) attribute_hidden; 63: strong_alias (__pthread_atfork, pthread_atfork) 64: #endif