diff --git a/headers/posix/errno.h b/headers/posix/errno.h index db52c99948..99d23e5707 100644 --- a/headers/posix/errno.h +++ b/headers/posix/errno.h @@ -15,8 +15,8 @@ extern "C" #define ENOERR 0 #define EOK ENOERR /* some code assumes EOK exists */ -/* XXX - Fix this once TLS works */ -extern int errno; +extern int *_errnop(void); +#define errno (*(_errnop())) #ifdef __cplusplus } /* "C" */ diff --git a/src/kernel/libroot/posix/errno.c b/src/kernel/libroot/posix/errno.c index 9f3b304f1d..5f80523c88 100644 --- a/src/kernel/libroot/posix/errno.c +++ b/src/kernel/libroot/posix/errno.c @@ -3,5 +3,15 @@ * Simple file to get errno defined!! */ -int errno; +#include + +/* XXX - Fix this once TLS works */ + +static int errno_storage; + +int* +_errnop(void) +{ + return &errno_storage; +}