diff options
author | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-03-11 18:57:22 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@gmx.de> | 2013-03-11 18:57:22 +0100 |
commit | 25f04a68a168a948783618910e115316eb0ed3fc (patch) | |
tree | b3cb88e49ef21b5855569918634937bdbf78b19e /sys/src/ape/lib/ap/plan9 | |
parent | 34ec2056041a193a471701dd50e2032dc300fb0e (diff) |
ape: threadsafe errno
store errno on the private process stack so its always per process
and not just per memory space. errno itself becomes a macro
dereferencing int *_errnoloc; which is initialized from main9.s
pointing to the private stack location.
various fixes in programs that just imported errno variable with
"extern int errno;" instead of including <errno.h>.
Diffstat (limited to 'sys/src/ape/lib/ap/plan9')
-rw-r--r-- | sys/src/ape/lib/ap/plan9/_envsetup.c | 2 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/plan9/_errno.c | 4 | ||||
-rw-r--r-- | sys/src/ape/lib/ap/plan9/_fdinfo.c | 4 |
3 files changed, 5 insertions, 5 deletions
diff --git a/sys/src/ape/lib/ap/plan9/_envsetup.c b/sys/src/ape/lib/ap/plan9/_envsetup.c index 21d6be3f4..083a75d17 100644 --- a/sys/src/ape/lib/ap/plan9/_envsetup.c +++ b/sys/src/ape/lib/ap/plan9/_envsetup.c @@ -19,7 +19,7 @@ */ char **environ; -int errno; +int *_errnoloc; unsigned long _clock; static void fdsetup(char *, char *); static void sigsetup(char *, char *); diff --git a/sys/src/ape/lib/ap/plan9/_errno.c b/sys/src/ape/lib/ap/plan9/_errno.c index 8e5caad7d..e7e1e355b 100644 --- a/sys/src/ape/lib/ap/plan9/_errno.c +++ b/sys/src/ape/lib/ap/plan9/_errno.c @@ -10,7 +10,7 @@ char _plan9err[ERRMAX]; static struct errmap { - int errno; + int num; char *ename; } map[] = { /* from /sys/src/9/port/errstr.h */ @@ -119,6 +119,6 @@ _syserrno(void) if(strstr(_plan9err, map[i].ename) != 0) break; _ERRSTR(_plan9err, sizeof _plan9err); - errno = (i < NERRMAP)? map[i].errno : EINVAL; + errno = (i < NERRMAP)? map[i].num : EINVAL; } } diff --git a/sys/src/ape/lib/ap/plan9/_fdinfo.c b/sys/src/ape/lib/ap/plan9/_fdinfo.c index 0252fb6d1..7a3415c93 100644 --- a/sys/src/ape/lib/ap/plan9/_fdinfo.c +++ b/sys/src/ape/lib/ap/plan9/_fdinfo.c @@ -1,12 +1,12 @@ #define _BSDTIME_EXTENSION #include "lib.h" #include <sys/stat.h> -#include <stdlib.h> #include <unistd.h> +#include <errno.h> +#include <stdlib.h> #include "sys9.h" #include <string.h> -extern int errno; Fdinfo _fdinfo[OPEN_MAX]; /* |