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/await.c | |
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/await.c')
-rw-r--r-- | src/lib9/await.c | 21 |
1 files changed, 17 insertions, 4 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); +} + |