mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-12 11:10:07 +00:00
update to use new thread library
This commit is contained in:
parent
6a5c5d4870
commit
f99790979b
3 changed files with 31 additions and 13 deletions
|
@ -5,10 +5,14 @@ SHORTLIB=draw bio 9
|
|||
|
||||
<$PLAN9/src/mkmany
|
||||
|
||||
$O.tcolors: tcolors.$O
|
||||
$LD -o $target tcolors.$O -ldraw -lthread -l9 $LDFLAGS
|
||||
|
||||
$O.mc: mc.$O
|
||||
$LD -o $target mc.$O -lfs -lmux -lthread -ldraw -lbio -l9 $LDFLAGS
|
||||
$LD -o $target mc.$O -lfs -lmux -ldraw -lthread -lbio -l9 $LDFLAGS
|
||||
|
||||
$O.stats: stats.$O
|
||||
$LD -o $target stats.$O -lthread -ldraw -lbio -l9 $LDFLAGS
|
||||
$LD -o $target stats.$O -ldraw -lthread -lbio -l9 $LDFLAGS
|
||||
|
||||
LDFLAGS=$LDFLAGS -L$X11/lib -lX11
|
||||
|
||||
|
|
|
@ -666,14 +666,15 @@ keyboardthread(void *v)
|
|||
killall("quit");
|
||||
}
|
||||
|
||||
void machthread(void*);
|
||||
void machproc(void*);
|
||||
void updateproc(void*);
|
||||
|
||||
void
|
||||
threadmain(int argc, char *argv[])
|
||||
{
|
||||
int i, j;
|
||||
char *s;
|
||||
ulong v, vmax, nargs;
|
||||
ulong nargs;
|
||||
char args[100];
|
||||
|
||||
nmach = 1;
|
||||
|
@ -733,7 +734,7 @@ threadmain(int argc, char *argv[])
|
|||
}
|
||||
|
||||
for(i=0; i<nmach; i++)
|
||||
threadcreate(machthread, &mach[i], STACK);
|
||||
proccreate(machproc, &mach[i], STACK);
|
||||
|
||||
for(i=0; i<nargs; i++)
|
||||
switch(args[i]){
|
||||
|
@ -804,10 +805,18 @@ threadmain(int argc, char *argv[])
|
|||
threadcreate(keyboardthread, nil, XSTACK);
|
||||
threadcreate(mousethread, nil, XSTACK);
|
||||
threadcreate(resizethread, nil, XSTACK);
|
||||
|
||||
proccreate(updateproc, nil, XSTACK);
|
||||
resize();
|
||||
unlockdisplay(display);
|
||||
}
|
||||
|
||||
void
|
||||
updateproc(void *z)
|
||||
{
|
||||
int i;
|
||||
ulong v, vmax;
|
||||
|
||||
USED(z);
|
||||
for(;;){
|
||||
parity = 1-parity;
|
||||
lockdisplay(display);
|
||||
|
@ -821,12 +830,12 @@ threadmain(int argc, char *argv[])
|
|||
}
|
||||
flushimage(display, 1);
|
||||
unlockdisplay(display);
|
||||
threadsleep(sleeptime);
|
||||
sleep(sleeptime);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
machthread(void *v)
|
||||
machproc(void *v)
|
||||
{
|
||||
char buf[256], *f[4], *p;
|
||||
int i, n, t;
|
||||
|
@ -835,7 +844,7 @@ machthread(void *v)
|
|||
m = v;
|
||||
t = 0;
|
||||
for(;;){
|
||||
n = threadread(m->fd, buf+t, sizeof buf-t);
|
||||
n = read(m->fd, buf+t, sizeof buf-t);
|
||||
m->dead = 0;
|
||||
if(n <= 0)
|
||||
break;
|
||||
|
|
|
@ -199,7 +199,7 @@ startfsys(void)
|
|||
if(post9pservice(p[1], "plumb") < 0)
|
||||
sysfatal("post9pservice plumb: %r");
|
||||
close(p[1]);
|
||||
threadcreate(fsysproc, nil, Stack);
|
||||
proccreate(fsysproc, nil, Stack);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -218,14 +218,19 @@ fsysproc(void *v)
|
|||
if(buf == nil)
|
||||
error("malloc failed: %r");
|
||||
qlock(&readlock);
|
||||
n = threadread9pmsg(srvfd, buf, messagesize);
|
||||
n = read9pmsg(srvfd, buf, messagesize);
|
||||
if(n <= 0){
|
||||
if(n < 0)
|
||||
error("i/o error on server channel");
|
||||
threadexitsall("unmounted");
|
||||
}
|
||||
if(readlock.head == nil) /* no other processes waiting to read; start one */
|
||||
threadcreate(fsysproc, nil, Stack);
|
||||
/*
|
||||
* can give false positive (create an extra fsysproc) once in a while,
|
||||
* but no false negatives, so good enough. once we have one extra
|
||||
* we'll never have more.
|
||||
*/
|
||||
if(readlock.waiting.head == nil) /* no other processes waiting to read; start one */
|
||||
proccreate(fsysproc, nil, Stack);
|
||||
qunlock(&readlock);
|
||||
if(t == nil)
|
||||
t = emalloc(sizeof(Fcall));
|
||||
|
|
Loading…
Reference in a new issue