From a995e477ffb4dd1184da87e9e46a9e57f3178c63 Mon Sep 17 00:00:00 2001 From: rsc Date: Wed, 1 Oct 2003 02:50:57 +0000 Subject: Various tweaks to make things run on Mac OS. The main change is the use of pthread to implement ffork. --- src/libthread/getpid.c | 5 ++--- src/libthread/label.h | 15 +++++++++++++++ src/libthread/trend.c | 2 +- 3 files changed, 18 insertions(+), 4 deletions(-) (limited to 'src/libthread') diff --git a/src/libthread/getpid.c b/src/libthread/getpid.c index da03bd3f..c4d23dad 100644 --- a/src/libthread/getpid.c +++ b/src/libthread/getpid.c @@ -1,8 +1,7 @@ #include "threadimpl.h" -#include - +extern int getfforkid(void); int _threadgetpid(void) { - return getpid(); + return getfforkid(); } diff --git a/src/libthread/label.h b/src/libthread/label.h index 0c9f3030..a1f6fa5a 100644 --- a/src/libthread/label.h +++ b/src/libthread/label.h @@ -17,6 +17,21 @@ struct Label ulong si; ulong di; }; +#elif defined(__APPLE__) +struct Label +{ + ulong pc; /* lr */ + ulong cr; /* mfcr */ + ulong ctr; /* mfcr */ + ulong xer; /* mfcr */ + ulong sp; /* callee saved: r1 */ + ulong toc; /* callee saved: r2 */ + ulong gpr[19]; /* callee saved: r13-r31 */ +// XXX: currently do not save vector registers or floating-point state +// ulong pad; +// uvlong fpr[18]; /* callee saved: f14-f31 */ +// ulong vr[4*12]; /* callee saved: v20-v31, 256-bits each */ +}; #else #error "Unknown or unsupported architecture" #endif diff --git a/src/libthread/trend.c b/src/libthread/trend.c index 6f8adcd5..1ccf1a79 100644 --- a/src/libthread/trend.c +++ b/src/libthread/trend.c @@ -25,7 +25,7 @@ threadmain(int argc, char **argv) c[1] = chancreate(sizeof(ulong), 1); c[2] = c[0]; - threadcreate(pingpong, c, 16384); + proccreate(pingpong, c, 16384); threadcreate(pingpong, c+1, 16384); sendul(c[0], atoi(argv[1])); } -- cgit v1.2.3