aboutsummaryrefslogtreecommitdiff
path: root/src/cmd/acme
diff options
context:
space:
mode:
authorrsc <devnull@localhost>2004-12-27 00:38:59 +0000
committerrsc <devnull@localhost>2004-12-27 00:38:59 +0000
commit334cb1e91ceb2d667c1cfd0b71aa9801bef089ec (patch)
treed08c04f14c4a76c5d915af7370160b466ed0fdd1 /src/cmd/acme
parent0a839b83142bba3205fdd5e30d2ba3514aa4513b (diff)
downloadplan9port-334cb1e91ceb2d667c1cfd0b71aa9801bef089ec.tar.gz
plan9port-334cb1e91ceb2d667c1cfd0b71aa9801bef089ec.tar.bz2
plan9port-334cb1e91ceb2d667c1cfd0b71aa9801bef089ec.zip
change to use new thread library
Diffstat (limited to 'src/cmd/acme')
-rw-r--r--src/cmd/acme/acme.c51
-rw-r--r--src/cmd/acme/edit.c1
-rw-r--r--src/cmd/acme/exec.c1
-rw-r--r--src/cmd/acme/fsys.c4
-rw-r--r--src/cmd/acme/look.c1
-rw-r--r--src/cmd/acme/regx.c1
-rw-r--r--src/cmd/acme/time.c6
7 files changed, 41 insertions, 24 deletions
diff --git a/src/cmd/acme/acme.c b/src/cmd/acme/acme.c
index 18765bcd..14d17e2c 100644
--- a/src/cmd/acme/acme.c
+++ b/src/cmd/acme/acme.c
@@ -41,6 +41,7 @@ char *fontnames[2] =
Command *command;
+void shutdownthread(void*);
void acmeerrorinit(void);
void readfile(Column*, char*);
static int shutdown(void*, char*);
@@ -167,14 +168,23 @@ threadmain(int argc, char *argv[])
cwait = threadwaitchan();
ccommand = chancreate(sizeof(Command**), 0);
+ chansetname(ccommand, "ccommand");
ckill = chancreate(sizeof(Rune*), 0);
+ chansetname(ckill, "ckill");
cxfidalloc = chancreate(sizeof(Xfid*), 0);
+ chansetname(cxfidalloc, "cxfidalloc");
cxfidfree = chancreate(sizeof(Xfid*), 0);
+ chansetname(cxfidfree, "cxfidfree");
cnewwindow = chancreate(sizeof(Channel*), 0);
+ chansetname(cnewwindow, "cnewwindow");
cerr = chancreate(sizeof(char*), 0);
+ chansetname(cerr, "cerr");
cedit = chancreate(sizeof(int), 0);
+ chansetname(cedit, "cedit");
cexit = chancreate(sizeof(int), 0);
+ chansetname(cexit, "cexit");
cwarn = chancreate(sizeof(void*), 1);
+ chansetname(cwarn, "cwarn");
if(cwait==nil || ccommand==nil || ckill==nil || cxfidalloc==nil || cxfidfree==nil || cerr==nil || cexit==nil || cwarn==nil){
fprint(2, "acme: can't create initial channels: %r\n");
exits("channels");
@@ -248,8 +258,8 @@ threadmain(int argc, char *argv[])
threadcreate(waitthread, nil, STACK);
threadcreate(xfidallocthread, nil, STACK);
threadcreate(newwindowthread, nil, STACK);
-
- threadnotify(shutdown, 1);
+/* threadcreate(shutdownthread, nil, STACK); */
+/* threadnotify(shutdown, 1); */
recvul(cexit);
killprocs();
threadexitsall(nil);
@@ -307,6 +317,21 @@ shutdown(void *v, char *msg)
return 0;
}
+/*
+void
+shutdownthread(void *v)
+{
+ char *msg;
+ Channel *c;
+
+ USED(v);
+
+ c = threadnotechan();
+ while((msg = recvp(c)) != nil)
+ shutdown(nil, msg);
+}
+*/
+
void
killprocs(void)
{
@@ -332,7 +357,7 @@ acmeerrorproc(void *v)
USED(v);
threadsetname("acmeerrorproc");
buf = emalloc(8192+1);
- while((n=threadread(errorfd, buf, 8192)) >= 0){
+ while((n=read(errorfd, buf, 8192)) >= 0){
buf[n] = '\0';
sendp(cerr, estrdup(buf));
}
@@ -367,7 +392,7 @@ acmeerrorinit(void)
errorfd = pfd[1];
if(errorfd < 0)
error("can't re-open acmeerror file");
- threadcreate(acmeerrorproc, nil, STACK);
+ proccreate(acmeerrorproc, nil, STACK);
}
/*
@@ -648,21 +673,6 @@ waitthread(void *v)
alts[WCmd].op = CHANRCV;
alts[NWALT].op = CHANEND;
- /*
- * BUG. Actually there's no bug here but this is the
- * first place you'd look. When a program is run,
- * it doesn't disappear from the main tag until the
- * mouse is moved or keyboard is hit. This would
- * suggest that the WWait case isn't working right,
- * but what's actually going on is that the X11 code
- * is running a select-based threading loop that
- * doesn't get interrupted until there is data from X11.
- * This was done to make acme work on Suns and
- * other systems where our threading was sub-par.
- * Now that we've gotten pthreads working (sort of),
- * we might be able to fix this properly.
- * But the bug is in libdraw and libthread, not here.
- */
command = nil;
for(;;){
switch(alt(alts)){
@@ -719,7 +729,7 @@ waitthread(void *v)
textsetselect(t, 0, 0);
}
if(w->msg[0])
- warning(c->md, "%S: %s\n", c->name, w->msg);
+ warning(c->md, "%.*S: exit %s\n", c->nname-1, c->name, w->msg);
flushimage(display, 1);
}
qunlock(&row.lk);
@@ -791,6 +801,7 @@ xfidallocthread(void *v)
else{
x = emalloc(sizeof(Xfid));
x->c = chancreate(sizeof(void(*)(Xfid*)), 0);
+ chansetname(x->c, "xc%p", x->c);
x->arg = x;
threadcreate(xfidctl, x->arg, STACK);
}
diff --git a/src/cmd/acme/edit.c b/src/cmd/acme/edit.c
index e052430e..c41985bb 100644
--- a/src/cmd/acme/edit.c
+++ b/src/cmd/acme/edit.c
@@ -178,6 +178,7 @@ editcmd(Text *ct, Rune *r, uint n)
resetxec();
if(editerrc == nil){
editerrc = chancreate(sizeof(char*), 0);
+ chansetname(editerrc, "editerrc");
lastpat = allocstring(0);
}
threadcreate(editthread, nil, STACK);
diff --git a/src/cmd/acme/exec.c b/src/cmd/acme/exec.c
index ddc28a82..a38ae889 100644
--- a/src/cmd/acme/exec.c
+++ b/src/cmd/acme/exec.c
@@ -1585,6 +1585,7 @@ run(Window *win, char *s, Rune *rdir, int ndir, int newns, char *argaddr, char *
arg = emalloc(10*sizeof(void*));
c = emalloc(sizeof *c);
cpid = chancreate(sizeof(ulong), 0);
+ chansetname(cpid, "cpid %s", s);
arg[0] = win;
arg[1] = s;
arg[2] = rdir;
diff --git a/src/cmd/acme/fsys.c b/src/cmd/acme/fsys.c
index a095529f..66b935f8 100644
--- a/src/cmd/acme/fsys.c
+++ b/src/cmd/acme/fsys.c
@@ -126,7 +126,7 @@ fsysinit(void)
fmtinstall('F', fcallfmt);
if((u = getuser()) != nil)
user = estrdup(u);
- threadcreate(fsysproc, nil, STACK);
+ proccreate(fsysproc, nil, STACK);
}
void
@@ -142,7 +142,7 @@ fsysproc(void *v)
x = nil;
for(;;){
buf = emalloc(messagesize+UTFmax); /* overflow for appending partial rune in xfidwrite */
- n = threadread9pmsg(sfd, buf, messagesize);
+ n = read9pmsg(sfd, buf, messagesize);
if(n <= 0){
if(closing)
break;
diff --git a/src/cmd/acme/look.c b/src/cmd/acme/look.c
index d760745d..eda51ef0 100644
--- a/src/cmd/acme/look.c
+++ b/src/cmd/acme/look.c
@@ -45,6 +45,7 @@ startplumbing(void)
fprint(2, "acme: can't initialize plumber: %r\n");
else{
cplumb = chancreate(sizeof(Plumbmsg*), 0);
+ chansetname(cplumb, "cplumb");
threadcreate(plumbproc, nil, STACK);
}
plumbsendfid = plumbopenfid("send", OWRITE|OCEXEC);
diff --git a/src/cmd/acme/regx.c b/src/cmd/acme/regx.c
index f934187b..8904e9cb 100644
--- a/src/cmd/acme/regx.c
+++ b/src/cmd/acme/regx.c
@@ -128,6 +128,7 @@ void
rxinit(void)
{
rechan = chancreate(sizeof(Inst*), 0);
+ chansetname(rechan, "rechan");
lastregexp = runemalloc(1);
}
diff --git a/src/cmd/acme/time.c b/src/cmd/acme/time.c
index f80891a4..35982b78 100644
--- a/src/cmd/acme/time.c
+++ b/src/cmd/acme/time.c
@@ -50,7 +50,7 @@ timerproc(void *v)
nt = 0;
old = msec();
for(;;){
- threadsleep(1); /* will sleep minimum incr */
+ sleep(1); /* will sleep minimum incr */
new = msec();
dt = new-old;
old = new;
@@ -98,7 +98,8 @@ void
timerinit(void)
{
ctimer = chancreate(sizeof(Timer*), 100);
- threadcreate(timerproc, nil, STACK);
+ chansetname(ctimer, "ctimer");
+ proccreate(timerproc, nil, STACK);
}
Timer*
@@ -112,6 +113,7 @@ timerstart(int dt)
else{
t = emalloc(sizeof(Timer));
t->c = chancreate(sizeof(int), 0);
+ chansetname(t->c, "tc%p", t->c);
}
t->next = nil;
t->dt = dt;