diff options
author | rsc <devnull@localhost> | 2004-12-27 00:38:59 +0000 |
---|---|---|
committer | rsc <devnull@localhost> | 2004-12-27 00:38:59 +0000 |
commit | 334cb1e91ceb2d667c1cfd0b71aa9801bef089ec (patch) | |
tree | d08c04f14c4a76c5d915af7370160b466ed0fdd1 /src/cmd/acme | |
parent | 0a839b83142bba3205fdd5e30d2ba3514aa4513b (diff) | |
download | plan9port-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.c | 51 | ||||
-rw-r--r-- | src/cmd/acme/edit.c | 1 | ||||
-rw-r--r-- | src/cmd/acme/exec.c | 1 | ||||
-rw-r--r-- | src/cmd/acme/fsys.c | 4 | ||||
-rw-r--r-- | src/cmd/acme/look.c | 1 | ||||
-rw-r--r-- | src/cmd/acme/regx.c | 1 | ||||
-rw-r--r-- | src/cmd/acme/time.c | 6 |
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; |