X loses keyboard on trivial operation ls -l /dev/kbd
The kbd translator formerly believed it needed to start a new thread for every open call. It also _closed_ the device after every corresponding close_hook call. 2002-10-28 David Walter <[EMAIL PROTECTED]> * kbd.c (trivfs_goaway): moved device_close from close_hook to here. * kbd.c : removed close_hook * kbd.c (main): moved thread create from open_hook (one thread per open) to main, one device master thread per process. --- /ryojusen/opt/src/hurd-20021011/trans/kbd.c 2002-10-28 14:32:39.000000000 -0500 +++ /opt/hurd/trans/kbd.c 2002-10-28 14:34:46.000000000 -0500 @@ -112,29 +112,13 @@ err = device_open (master, D_READ, "kbd", &kbd.port); mach_port_deallocate (mach_task_self (), master); } - kbd.cnt = 0; - - cthread_detach (cthread_fork (kbd_thread, 0)); - mutex_unlock (&kbd.lock); return err; } -static void -close_hook (struct trivfs_peropen *po) -{ - int cnt = 1; - int mode = KB_ASCII; - - device_set_status (kbd.port, KDSKBDMODE, (dev_status_t) & mode, cnt); - device_close (kbd.port); - kbd.port = MACH_PORT_NULL; -} - /* Trivfs hooks */ error_t (*trivfs_peropen_create_hook) (struct trivfs_peropen *) = open_hook; -void (*trivfs_peropen_destroy_hook) (struct trivfs_peropen *) = close_hook; int main (int argc, char **argv) @@ -153,6 +137,9 @@ error (3, err, "Contacting parent"); /* Launch. */ mutex_init (&kbd.lock); + + kbd.cnt = 0; + cthread_detach (cthread_fork (kbd_thread, 0)); ports_manage_port_operations_multithread (fsys->pi.bucket, demuxer, 2 * 60 * 1000, 0, 0); @@ -185,6 +172,11 @@ error_t trivfs_goaway (struct trivfs_control *fsys, int flags) { + int cnt = 1; + int mode = KB_ASCII; + device_set_status (kbd.port, KDSKBDMODE, (dev_status_t) & mode, cnt); + device_close (kbd.port); + kbd.port = MACH_PORT_NULL; exit (0); } -- /^\ \ / ASCII RIBBON CAMPAIGN X AGAINST HTML MAIL / \ Public Key Server (pgp.dtype.org) -- Index '[EMAIL PROTECTED]' Type bits /keyID Date User ID pub 1024D/DC92AE30 2002/02/26 David Walter <[EMAIL PROTECTED]> _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd