plan9port

[fork] Plan 9 from user space
git clone git://src.adamsgaard.dk/plan9port # fast
git clone https://src.adamsgaard.dk/plan9port.git # slow
Log | Files | Refs | README | LICENSE Back to index

commit 005a85f3a2ef85ec1a64ce05a486c84e25cf6f94
parent c345061e8d81a737b2926da7ecad4b4389677fe8
Author: rsc <devnull@localhost>
Date:   Fri,  7 Jan 2005 08:02:54 +0000

success on the sun

Diffstat:
Msrc/cmd/rc/unixcrap.c | 16++++++++++++++++
Msrc/lib9/await.c | 6+++++-
Msrc/lib9/post9p.c | 3+++
3 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/src/cmd/rc/unixcrap.c b/src/cmd/rc/unixcrap.c @@ -17,13 +17,29 @@ static int rlx[] = { RLIMIT_CORE, RLIMIT_DATA, RLIMIT_FSIZE, +#ifdef RLIMIT_MEMLOCK RLIMIT_MEMLOCK, +#else + 0, +#endif +#ifdef RLIMIT_RSS RLIMIT_RSS, +#else + 0, +#endif RLIMIT_NOFILE, RLIMIT_STACK, RLIMIT_CPU, +#ifdef RLIMIT_NPROC RLIMIT_NPROC, +#else + 0, +#endif +#ifdef RLIMIT_RSS RLIMIT_RSS, +#else + 0, +#endif }; static void diff --git a/src/lib9/await.c b/src/lib9/await.c @@ -82,7 +82,11 @@ _await(int pid4, char *str, int n, int opt) ulong u, s; for(;;){ - pid = wait4(pid4, &status, opt, &ru); + /* On Linux, pid==-1 means anyone; on SunOS, it's pid==0. */ + if(pid4 == -1) + pid = wait3(&status, opt, &ru); + else + pid = wait4(pid4, &status, opt, &ru); if(pid <= 0) return -1; u = ru.ru_utime.tv_sec*1000+((ru.ru_utime.tv_usec+500)/1000); diff --git a/src/lib9/post9p.c b/src/lib9/post9p.c @@ -10,6 +10,7 @@ post9pservice(int fd, char *name) if((ns = getns()) == nil) return -1; + s = smprint("unix!%s/%s", ns, name); free(ns); if(s == nil) @@ -27,6 +28,8 @@ post9pservice(int fd, char *name) _exits("exec"); default: w = wait(); + if(w == nil) + return -1; close(fd); free(s); if(w->msg && w->msg[0]){