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.
This commit is contained in:
rsc 2004-02-29 22:10:26 +00:00
parent d51419bf43
commit 5a8e63b2f0
107 changed files with 665 additions and 6637 deletions

View file

@ -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);
}

View file

@ -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

View file

@ -1,6 +1,6 @@
#include <u.h>
#include <libc.h>
#include "../libfmt/nan.h"
#include "fmt/nan.h"
double
NaN(void)

View file

@ -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);
}