Add the 'akaros' threading model to gcc (XCC)
[akaros.git] / tools / compilers / gcc-glibc / glibc-2.19-akaros / include / errno.h
1 /* Modified for Akaros, removed the redefinition of errno */
2
3 #ifndef _ERRNO_H
4
5 #include <stdlib/errno.h>
6
7 #if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus
8
9 # ifdef IS_IN_rtld
10 #  include <dl-sysdep.h>
11 # endif
12
13 # if RTLD_PRIVATE_ERRNO
14 /* The dynamic linker uses its own private errno variable.
15    All access to errno inside the dynamic linker is serialized,
16    so a single (hidden) global variable is all it needs.  */
17
18 #  undef  errno
19 #  define errno rtld_errno
20 extern int rtld_errno attribute_hidden;
21
22 # elif !defined NOT_IN_libc || defined IN_LIB
23
24 #  include <tls.h>
25
26 /* AKAROS doesn't want the redef of errno */
27 #  ifndef __akaros__
28 #    undef  errno
29 #    ifndef NOT_IN_libc
30 #     define errno __libc_errno
31 #    else
32 #     define errno errno                /* For #ifndef errno tests.  */
33 #    endif
34 extern __thread int errno attribute_tls_model_ie;
35 #  endif
36
37 # endif /* !NOT_IN_libc || IN_LIB */
38
39 # define __set_errno(val) (errno = (val))
40
41 # ifndef __ASSEMBLER__
42 extern int *__errno_location (void) __THROW __attribute__ ((__const__))
43 #  if RTLD_PRIVATE_ERRNO
44      attribute_hidden
45 #  endif
46 ;
47 libc_hidden_proto (__errno_location)
48 # endif
49
50 #endif /* _ERRNO_H */
51
52 #endif /* ! _ERRNO_H */