commit - 6a5c5d48705ef8374f5172731408f0f27b0f0dc6
commit + f99790979b4a659d7f6e490fbb8b26d630804eed
blob - a12abd81c03b148893ee84b0749eb31a916e5c39
blob + bdb33086df16cf9561ba6030797a47ca16d31371
--- src/cmd/draw/mkfile
+++ src/cmd/draw/mkfile
<$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
+
blob - 2f6064673e660a63bf037362e502963ab3c43433
blob + 87326cdac878459c84d96c9c326f99c3b77ec8a6
--- src/cmd/draw/stats.c
+++ src/cmd/draw/stats.c
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;
}
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]){
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);
}
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;
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;
blob - 0ffd50534502f236a3e26a9b6b8c410121114b9c
blob + e9be1eb65f8a140838151190729a2ea944c3dc98
--- src/cmd/plumb/fsys.c
+++ src/cmd/plumb/fsys.c
if(post9pservice(p[1], "plumb") < 0)
sysfatal("post9pservice plumb: %r");
close(p[1]);
- threadcreate(fsysproc, nil, Stack);
+ proccreate(fsysproc, nil, Stack);
}
static void
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));