2  * Copyright (c) 2005-2007 Apple Inc. All rights reserved. 
   4  * @APPLE_LICENSE_HEADER_START@ 
   6  * This file contains Original Code and/or Modifications of Original Code 
   7  * as defined in and that are subject to the Apple Public Source License 
   8  * Version 2.0 (the 'License'). You may not use this file except in 
   9  * compliance with the License. Please obtain a copy of the License at 
  10  * http://www.opensource.apple.com/apsl/ and read it before using this 
  13  * The Original Code and all software distributed under the License are 
  14  * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER 
  15  * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, 
  16  * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, 
  17  * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. 
  18  * Please see the License for the specific language governing rights and 
  19  * limitations under the License. 
  21  * @APPLE_LICENSE_HEADER_END@ 
  24  * __libc_init() is called from libSystem_initializer() 
  29 #include <pthread_machdep.h> 
  31 struct ProgramVars
; /* forward reference */ 
  33 extern void _program_vars_init(const struct ProgramVars 
*vars
); 
  34 extern void _libc_fork_init(void (*prepare
)(void), void (*parent
)(void), void (*child
)(void)); 
  35 extern void _init_clock_port(); 
  36 extern pthread_lock_t _malloc_lock
; 
  37 extern void __xlocale_init(void); 
  38 extern void __guard_setup(const char *apple
[]); 
  39 extern void __malloc_entropy_setup(const char *apple
[]); 
  40 extern int usenew_impl
; 
  43 /* 5243343 - temporary hack to detect if we are running the conformance test */ 
  45 __private_extern__ 
int PR_5243343_flag 
= 0; 
  46 #endif /* PR_5243343 */ 
  47 __private_extern__ 
int __pthread_lock_debug 
= 0; 
  48 __private_extern__ 
int __pthread_lock_old 
= 0; 
  51 __libc_init(const struct ProgramVars 
*vars
, void (*atfork_prepare
)(void), void (*atfork_parent
)(void), void (*atfork_child
)(void), const char *apple
[]) 
  53         _program_vars_init(vars
); 
  54         _libc_fork_init(atfork_prepare
, atfork_parent
, atfork_child
); 
  55         LOCK_INIT(_malloc_lock
); 
  59         __malloc_entropy_setup(apple
); 
  63         /* 5243343 - temporary hack to detect if we are running the conformance test */ 
  64         if(getenv("TET_EXECUTE")) 
  66 #endif /* PR_5243343 */ 
  67 #if defined(__i386__) || defined(__x86_64__) 
  68         if(getenv("__PTHREAD_LOCK_DEBUG__")) 
  69                 __pthread_lock_debug 
= 1; 
  70         if(getenv("__PTHREAD_LOCK_OLD__")) { 
  71                 __pthread_lock_old 
= 1;