Fighting the good fight.

Move libfmt, libutf into subdirectories of lib9.

Add poll-based socket i/o to libthread, so that we can
avoid using multiple procs when possible, thus removing
dependence on crappy pthreads implementations.

Convert samterm, acme to the single-proc libthread.

Bring libcomplete, acme up-to-date w.r.t. Plan 9 distribution.
This commit is contained in:
rsc 2004-02-29 22:10:26 +00:00
parent d51419bf43
commit 5a8e63b2f0
107 changed files with 665 additions and 6637 deletions

View file

@ -34,6 +34,7 @@ void
_ioproc(void *arg)
{
int i;
int fd;
Keyboardctl *kc;
Rune r;
XEvent xevent;
@ -41,9 +42,11 @@ _ioproc(void *arg)
kc = arg;
threadsetname("kbdproc");
kc->pid = getpid();
fd = XConnectionNumber(_x.kbdcon);
XSelectInput(_x.kbdcon, _x.drawable, KeyPressMask);
for(;;){
XWindowEvent(_x.kbdcon, _x.drawable, KeyPressMask, &xevent);
while(XCheckWindowEvent(_x.kbdcon, _x.drawable, KeyPressMask, &xevent) == False)
threadfdwait(fd, 'r');
switch(xevent.type){
case KeyPress:
i = _xtoplan9kbd(&xevent);
@ -65,11 +68,12 @@ initkeyboard(char *file)
{
Keyboardctl *kc;
threadfdwaitsetup();
kc = mallocz(sizeof(Keyboardctl), 1);
if(kc == nil)
return nil;
kc->c = chancreate(sizeof(Rune), 20);
proccreate(_ioproc, kc, 4096);
threadcreate(_ioproc, kc, 4096);
return kc;
}