summaryrefslogtreecommitdiff
path: root/sys/src/ape/lib/ap/plan9
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@gmx.de>2013-03-11 18:57:22 +0100
committercinap_lenrek <cinap_lenrek@gmx.de>2013-03-11 18:57:22 +0100
commit25f04a68a168a948783618910e115316eb0ed3fc (patch)
treeb3cb88e49ef21b5855569918634937bdbf78b19e /sys/src/ape/lib/ap/plan9
parent34ec2056041a193a471701dd50e2032dc300fb0e (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.c2
-rw-r--r--sys/src/ape/lib/ap/plan9/_errno.c4
-rw-r--r--sys/src/ape/lib/ap/plan9/_fdinfo.c4
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];
/*