diff options
author | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-02-29 22:10:26 +0000 |
commit | 5a8e63b2f016735364d17866d5e2bcb35d20c78b (patch) | |
tree | d5d0ce11e087efaf81c77311bac9d30aed41783d /src/lib9 | |
parent | d51419bf4397cf13d0c50bf84c125477c6bed307 (diff) | |
download | plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.gz plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.tar.bz2 plan9port-5a8e63b2f016735364d17866d5e2bcb35d20c78b.zip |
Fighting the good fight.
Move libfmt, libutf into subdirectories of lib9.
Add poll-based socket i/o to libthread, so that we can
avoid using multiple procs when possible, thus removing
dependence on crappy pthreads implementations.
Convert samterm, acme to the single-proc libthread.
Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution.
Diffstat (limited to 'src/lib9')
-rw-r--r-- | src/lib9/await.c | 21 | ||||
-rw-r--r-- | src/lib9/mkfile | 71 | ||||
-rw-r--r-- | src/lib9/nan.c | 2 | ||||
-rw-r--r-- | src/lib9/wait.c | 20 |
4 files changed, 105 insertions, 9 deletions
diff --git a/src/lib9/await.c b/src/lib9/await.c index 5f2d58ba..a97c6d18 100644 --- a/src/lib9/await.c +++ b/src/lib9/await.c @@ -71,8 +71,8 @@ _p9strsig(char *s) return 0; } -int -await(char *str, int n) +static int +_await(char *str, int n, int opt) { int pid, status, cd; struct rusage ru; @@ -80,8 +80,8 @@ await(char *str, int n) ulong u, s; for(;;){ - pid = wait3(&status, 0, &ru); - if(pid < 0) + pid = wait3(&status, opt, &ru); + if(pid <= 0) return -1; u = ru.ru_utime.tv_sec*1000+((ru.ru_utime.tv_usec+500)/1000); s = ru.ru_stime.tv_sec*1000+((ru.ru_stime.tv_usec+500)/1000); @@ -103,3 +103,16 @@ await(char *str, int n) } } } + +int +await(char *str, int n) +{ + return _await(str, n, 0); +} + +int +awaitnohang(char *str, int n) +{ + return _await(str, n, WNOHANG); +} + diff --git a/src/lib9/mkfile b/src/lib9/mkfile index a0e75fc3..70b06a25 100644 --- a/src/lib9/mkfile +++ b/src/lib9/mkfile @@ -3,7 +3,71 @@ PLAN9=../.. LIB=lib9.a +NUM=\ + charstod.$O\ + pow10.$O\ + +# Could add errfmt, but we want to pick it up from lib9 instead. +FMTOFILES=\ + dofmt.$O\ + errfmt.$O\ + fltfmt.$O\ + fmt.$O\ + fmtfd.$O\ + fmtfdflush.$O\ + fmtlock.$O\ + fmtprint.$O\ + fmtquote.$O\ + fmtrune.$O\ + fmtstr.$O\ + fmtvprint.$O\ + fprint.$O\ + nan64.$O\ + print.$O\ + runefmtstr.$O\ + runeseprint.$O\ + runesmprint.$O\ + runesnprint.$O\ + runesprint.$O\ + runevseprint.$O\ + runevsmprint.$O\ + runevsnprint.$O\ + seprint.$O\ + smprint.$O\ + snprint.$O\ + sprint.$O\ + strtod.$O\ + vfprint.$O\ + vseprint.$O\ + vsmprint.$O\ + vsnprint.$O\ + $NUM\ + +UTFOFILES=\ + rune.$O\ + runestrcat.$O\ + runestrchr.$O\ + runestrcmp.$O\ + runestrcpy.$O\ + runestrdup.$O\ + runestrlen.$O\ + runestrecpy.$O\ + runestrncat.$O\ + runestrncmp.$O\ + runestrncpy.$O\ + runestrrchr.$O\ + runestrstr.$O\ + runetype.$O\ + utfecpy.$O\ + utflen.$O\ + utfnlen.$O\ + utfrrune.$O\ + utfrune.$O\ + utfutf.$O\ + OFILES=\ + $FMTOFILES\ + $UTFOFILES\ _exits.$O\ _p9dialparse.$O\ _p9dir.$O\ @@ -85,3 +149,10 @@ HFILES=\ $PLAN9/include/lib9.h\ <$PLAN9/src/mksyslib + +%.$O: fmt/%.c + $CC $CFLAGS -Ifmt fmt/$stem.c + +%.$O: utf/%.c + $CC $CFLAGS utf/$stem.c + diff --git a/src/lib9/nan.c b/src/lib9/nan.c index d9f69655..34feb153 100644 --- a/src/lib9/nan.c +++ b/src/lib9/nan.c @@ -1,6 +1,6 @@ #include <u.h> #include <libc.h> -#include "../libfmt/nan.h" +#include "fmt/nan.h" double NaN(void) diff --git a/src/lib9/wait.c b/src/lib9/wait.c index 6dc137b1..856f85c0 100644 --- a/src/lib9/wait.c +++ b/src/lib9/wait.c @@ -1,15 +1,15 @@ #include <u.h> #include <libc.h> -Waitmsg* -wait(void) +static Waitmsg* +_wait(int nohang) { int n, l; char buf[512], *fld[5]; Waitmsg *w; - n = await(buf, sizeof buf-1); - if(n < 0) + n = (nohang ? awaitnohang : await)(buf, sizeof buf-1); + if(n <= 0) return nil; buf[n] = '\0'; if(tokenize(buf, fld, nelem(fld)) != nelem(fld)){ @@ -29,3 +29,15 @@ wait(void) return w; } +Waitmsg* +wait(void) +{ + return _wait(0); +} + +Waitmsg* +waitnohang(void) +{ + return _wait(1); +} + |