summaryrefslogtreecommitdiff
path: root/emu/port
diff options
context:
space:
mode:
authorCharles Forsyth <charles.forsyth@gmail.com>2019-08-21 15:21:24 +0000
committerCharles Forsyth <charles.forsyth@gmail.com>2019-08-21 15:21:24 +0000
commit8a003973f13c53f37de48c6c635500b5a0988cfb (patch)
treec31d09069228de059225293e8cbd91e7758b27d3 /emu/port
parent230871f7e16b4cbbb77cbf184bd16d93601fe3b7 (diff)
parente09f600591d16a8badf8678ab7606eb00bca98c2 (diff)
Merged in nbuwe/inferno-os/NetBSD/pthreads (pull request #24)
NetBSD/pthreads
Diffstat (limited to 'emu/port')
-rw-r--r--emu/port/alloc.c4
-rw-r--r--emu/port/kproc-pthreads.c13
-rw-r--r--emu/port/mkdevc2
3 files changed, 18 insertions, 1 deletions
diff --git a/emu/port/alloc.c b/emu/port/alloc.c
index 333f4fa3..8b623de0 100644
--- a/emu/port/alloc.c
+++ b/emu/port/alloc.c
@@ -75,7 +75,11 @@ enum {
/* tracing */
enum {
+#ifdef __NetBSD__
+ Npadlong = 4, /* XXX: preserve 16-byte alignment */
+#else
Npadlong = 2,
+#endif
MallocOffset = 0,
ReallocOffset = 1
};
diff --git a/emu/port/kproc-pthreads.c b/emu/port/kproc-pthreads.c
index 32053794..c6caded6 100644
--- a/emu/port/kproc-pthreads.c
+++ b/emu/port/kproc-pthreads.c
@@ -12,6 +12,13 @@
#include <errno.h>
#include <semaphore.h>
+#ifdef __NetBSD__
+#include <sched.h>
+#define pthread_yield() (sched_yield())
+#define PTHREAD_STACK_MIN ((size_t)sysconf(_SC_THREAD_STACK_MIN))
+#endif
+
+
typedef struct Osdep Osdep;
struct Osdep {
sem_t sem;
@@ -115,6 +122,12 @@ kproc(char *name, void (*func)(void*), void *arg, int flags)
panic("kproc: no memory");
os->self = 0; /* set by tramp */
sem_init(&os->sem, 0, 0);
+#if defined(__NetBSD__) && defined(__powerpc__)
+ { /* XXX: Work around a problem on macppc with kernel semaphores. */
+ int val;
+ sem_getvalue(&os->sem, &val);
+ }
+#endif
p->os = os;
if(flags & KPDUPPG) {
diff --git a/emu/port/mkdevc b/emu/port/mkdevc
index 825c76b0..6b8c6a7d 100644
--- a/emu/port/mkdevc
+++ b/emu/port/mkdevc
@@ -10,7 +10,7 @@ BEGIN{
/^#/{
next;
}
-collect && /^[^ \t]/{
+collect && /^[^ \t]/{
collect = 0;
}
collect && section ~ "dev"{