/* Modified for Akaros, removed the redefinition of errno */

#ifndef _ERRNO_H

#include <stdlib/errno.h>

#if defined _ERRNO_H && !defined _ISOMAC && !defined __cplusplus

# ifdef IS_IN_rtld
#  include <dl-sysdep.h>
# endif

# if RTLD_PRIVATE_ERRNO
/* The dynamic linker uses its own private errno variable.
   All access to errno inside the dynamic linker is serialized,
   so a single (hidden) global variable is all it needs.  */

#  undef  errno
#  define errno rtld_errno
extern int rtld_errno attribute_hidden;

# elif !defined NOT_IN_libc || defined IN_LIB

#  include <tls.h>

/* AKAROS doesn't want the redef of errno */
#  ifndef __akaros__
#    undef  errno
#    ifndef NOT_IN_libc
#     define errno __libc_errno
#    else
#     define errno errno		/* For #ifndef errno tests.  */
#    endif
extern __thread int errno attribute_tls_model_ie;
#  endif

# endif	/* !NOT_IN_libc || IN_LIB */

# define __set_errno(val) (errno = (val))

# ifndef __ASSEMBLER__
extern int *__errno_location (void) __THROW __attribute__ ((__const__))
#  if RTLD_PRIVATE_ERRNO
     attribute_hidden
#  endif
;
libc_hidden_proto (__errno_location)
# endif

#endif /* _ERRNO_H */

#endif /* ! _ERRNO_H */
