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:
parent
d51419bf43
commit
5a8e63b2f0
107 changed files with 665 additions and 6637 deletions
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#include <u.h>
|
||||
#include <libc.h>
|
||||
#include "../libfmt/nan.h"
|
||||
#include "fmt/nan.h"
|
||||
|
||||
double
|
||||
NaN(void)
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue