mirror of
https://github.com/9fans/plan9port.git
synced 2025-01-27 11:52:03 +00:00
change to use new thread library
This commit is contained in:
parent
678ede7e54
commit
93f2ae0d92
3 changed files with 31 additions and 14 deletions
|
@ -96,13 +96,6 @@ waitforio(void)
|
||||||
ulong type;
|
ulong type;
|
||||||
|
|
||||||
again:
|
again:
|
||||||
|
|
||||||
alts[RPlumb].c = plumbc;
|
|
||||||
alts[RPlumb].v = &i;
|
|
||||||
alts[RPlumb].op = CHANRCV;
|
|
||||||
if((block & (1<<RPlumb)) || plumbc == nil)
|
|
||||||
alts[RPlumb].op = CHANNOP;
|
|
||||||
|
|
||||||
alts[RHost].c = hostc;
|
alts[RHost].c = hostc;
|
||||||
alts[RHost].v = &i;
|
alts[RHost].v = &i;
|
||||||
alts[RHost].op = CHANRCV;
|
alts[RHost].op = CHANRCV;
|
||||||
|
@ -121,12 +114,25 @@ again:
|
||||||
if(block & (1<<RMouse))
|
if(block & (1<<RMouse))
|
||||||
alts[RMouse].op = CHANNOP;
|
alts[RMouse].op = CHANNOP;
|
||||||
|
|
||||||
|
alts[RPlumb].c = plumbc;
|
||||||
|
alts[RPlumb].v = &i;
|
||||||
|
alts[RPlumb].op = CHANRCV;
|
||||||
|
if((block & (1<<RPlumb)) || plumbc == nil)
|
||||||
|
alts[RPlumb].op = CHANNOP;
|
||||||
|
|
||||||
alts[RResize].c = mousectl->resizec;
|
alts[RResize].c = mousectl->resizec;
|
||||||
alts[RResize].v = nil;
|
alts[RResize].v = nil;
|
||||||
alts[RResize].op = CHANRCV;
|
alts[RResize].op = CHANRCV;
|
||||||
if(block & (1<<RResize))
|
if(block & (1<<RResize))
|
||||||
alts[RResize].op = CHANNOP;
|
alts[RResize].op = CHANNOP;
|
||||||
|
|
||||||
|
if(0) print("waitforio %c%c%c%c%c\n",
|
||||||
|
"h-"[alts[RHost].op == CHANNOP],
|
||||||
|
"k-"[alts[RKeyboard].op == CHANNOP],
|
||||||
|
"m-"[alts[RMouse].op == CHANNOP],
|
||||||
|
"p-"[alts[RPlumb].op == CHANNOP],
|
||||||
|
"R-"[alts[RResize].op == CHANNOP]);
|
||||||
|
|
||||||
alts[NRes].op = CHANEND;
|
alts[NRes].op = CHANEND;
|
||||||
|
|
||||||
if(got & ~block)
|
if(got & ~block)
|
||||||
|
@ -135,6 +141,7 @@ again:
|
||||||
type = alt(alts);
|
type = alt(alts);
|
||||||
switch(type){
|
switch(type){
|
||||||
case RHost:
|
case RHost:
|
||||||
|
if(0) print("hostalt recv %d %d\n", i, hostbuf[i].n);
|
||||||
hostp = hostbuf[i].data;
|
hostp = hostbuf[i].data;
|
||||||
hoststop = hostbuf[i].data + hostbuf[i].n;
|
hoststop = hostbuf[i].data + hostbuf[i].n;
|
||||||
block = 0;
|
block = 0;
|
||||||
|
|
|
@ -38,7 +38,9 @@ rcv(void)
|
||||||
static int i = 0;
|
static int i = 0;
|
||||||
static int errs = 0;
|
static int errs = 0;
|
||||||
|
|
||||||
while((c=rcvchar()) != -1)
|
if(0) print("rcv in\n");
|
||||||
|
while((c=rcvchar()) != -1){
|
||||||
|
if(0) print(".");
|
||||||
switch(state){
|
switch(state){
|
||||||
case 0:
|
case 0:
|
||||||
h.type = c;
|
h.type = c;
|
||||||
|
@ -79,6 +81,10 @@ rcv(void)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
if(0) print(":");
|
||||||
|
}
|
||||||
|
|
||||||
|
if(0) print("rcv out\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
Text *
|
Text *
|
||||||
|
|
|
@ -112,11 +112,11 @@ extproc(void *argv)
|
||||||
c = arg[0];
|
c = arg[0];
|
||||||
fd = (int)arg[1];
|
fd = (int)arg[1];
|
||||||
|
|
||||||
threadfdnoblock(fd);
|
|
||||||
i = 0;
|
i = 0;
|
||||||
for(;;){
|
for(;;){
|
||||||
i = 1-i; /* toggle */
|
i = 1-i; /* toggle */
|
||||||
n = threadread(fd, plumbbuf[i].data, sizeof plumbbuf[i].data);
|
n = read(fd, plumbbuf[i].data, sizeof plumbbuf[i].data);
|
||||||
|
if(0) fprint(2, "ext %d\n", n);
|
||||||
if(n <= 0){
|
if(n <= 0){
|
||||||
fprint(2, "samterm: extern read error: %r\n");
|
fprint(2, "samterm: extern read error: %r\n");
|
||||||
threadexits("extern"); /* not a fatal error */
|
threadexits("extern"); /* not a fatal error */
|
||||||
|
@ -177,9 +177,10 @@ extstart(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
plumbc = chancreate(sizeof(int), 0);
|
plumbc = chancreate(sizeof(int), 0);
|
||||||
|
chansetname(plumbc, "plumbc");
|
||||||
arg[0] = plumbc;
|
arg[0] = plumbc;
|
||||||
arg[1] = (void*)fd;
|
arg[1] = (void*)fd;
|
||||||
threadcreate(extproc, arg, STACK);
|
proccreate(extproc, arg, STACK);
|
||||||
atexit(removeextern);
|
atexit(removeextern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -255,6 +256,7 @@ plumbstart(void)
|
||||||
if(fid == nil)
|
if(fid == nil)
|
||||||
return -1;
|
return -1;
|
||||||
plumbc = chancreate(sizeof(int), 0);
|
plumbc = chancreate(sizeof(int), 0);
|
||||||
|
chansetname(plumbc, "plumbc");
|
||||||
if(plumbc == nil){
|
if(plumbc == nil){
|
||||||
fsclose(fid);
|
fsclose(fid);
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -272,16 +274,17 @@ hostproc(void *arg)
|
||||||
c = arg;
|
c = arg;
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
threadfdnoblock(hostfd[0]);
|
|
||||||
for(;;){
|
for(;;){
|
||||||
i = 1-i; /* toggle */
|
i = 1-i; /* toggle */
|
||||||
n = threadread(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data);
|
n = read(hostfd[0], hostbuf[i].data, sizeof hostbuf[i].data);
|
||||||
|
if(0) fprint(2, "hostproc %d\n", n);
|
||||||
if(n <= 0){
|
if(n <= 0){
|
||||||
fprint(2, "samterm: host read error: %r\n");
|
fprint(2, "samterm: host read error: %r\n");
|
||||||
threadexitsall("host");
|
threadexitsall("host");
|
||||||
}
|
}
|
||||||
hostbuf[i].n = n;
|
hostbuf[i].n = n;
|
||||||
which = i;
|
which = i;
|
||||||
|
if(0) fprint(2, "hostproc send %d\n", which);
|
||||||
send(c, &which);
|
send(c, &which);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -290,5 +293,6 @@ void
|
||||||
hoststart(void)
|
hoststart(void)
|
||||||
{
|
{
|
||||||
hostc = chancreate(sizeof(int), 0);
|
hostc = chancreate(sizeof(int), 0);
|
||||||
threadcreate(hostproc, hostc, STACK);
|
chansetname(hostc, "hostc");
|
||||||
|
proccreate(hostproc, hostc, STACK);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue