(root)/
glibc-2.38/
include/
errno.h
       1  #ifndef _ERRNO_H
       2  #include <stdlib/errno.h>
       3  #if !defined _ISOMAC && !defined __ASSEMBLER__
       4  
       5  # if IS_IN (rtld)
       6  #  include <dl-sysdep.h>
       7  #  ifndef RTLD_PRIVATE_ERRNO
       8  #   error "dl-sysdep.h must define RTLD_PRIVATE_ERRNO!"
       9  #  endif
      10  # else
      11  #  define RTLD_PRIVATE_ERRNO	0
      12  # endif
      13  
      14  # if RTLD_PRIVATE_ERRNO
      15  /* The dynamic linker uses its own private errno variable.
      16     All access to errno inside the dynamic linker is serialized,
      17     so a single (hidden) global variable is all it needs.  */
      18  
      19  #  undef  errno
      20  #  define errno rtld_errno
      21  extern int rtld_errno attribute_hidden;
      22  
      23  # elif IS_IN_LIB && !IS_IN (rtld)
      24  
      25  #  undef  errno
      26  #  if IS_IN (libc)
      27  #   define errno __libc_errno
      28  #  else
      29  #   define errno errno		/* For #ifndef errno tests.  */
      30  #  endif
      31  extern __thread int errno attribute_tls_model_ie;
      32  
      33  # endif	/* IS_IN_LIB */
      34  
      35  # define __set_errno(val) (errno = (val))
      36  
      37  extern int *__errno_location (void) __THROW __attribute_const__
      38  #  if RTLD_PRIVATE_ERRNO
      39       attribute_hidden
      40  #  endif
      41  ;
      42  libc_hidden_proto (__errno_location)
      43  
      44  #endif /* !_ISOMAC && !__ASSEMBLER__ */
      45  #endif /* !_ERRNO_H */