2002-10-16 Jakub Jelinek <jakub@redhat.com>
[kopensolaris-gnu/glibc.git] / include / errno.h
1 #ifndef _ERRNO_H
2
3 #include <stdlib/errno.h>
4
5 #if defined _ERRNO_H && !defined _ISOMAC
6
7 # ifdef IS_IN_rtld
8 #  include <dl-sysdep.h>
9 # endif
10
11 # if RTLD_PRIVATE_ERRNO
12 /* The dynamic linker uses its own private errno variable.
13    All access to errno inside the dynamic linker is serialized,
14    so a single (hidden) global variable is all it needs.  */
15
16 #  undef  errno
17 #  define errno errno           /* For #ifndef errno tests.  */
18 extern int errno attribute_hidden;
19 #  define __set_errno(val) (errno = (val))
20
21 # else
22
23 #  include <tls.h>              /* Defines USE_TLS.  */
24
25 #  if USE___THREAD
26 #   undef  errno
27 #   ifndef NOT_IN_libc
28 #    define errno __libc_errno
29 #   else
30 #    define errno errno         /* For #ifndef errno tests.  */
31 #   endif
32 extern __thread int errno attribute_tls_model_ie;
33 #   define __set_errno(val) (errno = (val))
34 #  else
35 #   define __set_errno(val) (*__errno_location ()) = (val)
36 #  endif
37
38 # endif /* RTLD_PRIVATE_ERRNO */
39
40 #endif /* _ERRNO_H */
41
42 #endif /* ! _ERRNO_H */