On Sun, Oct 07, 2001 at 03:20:11PM +0200, Marcus Brinkmann wrote: > On Sun, Oct 07, 2001 at 05:19:28AM +0200, Marcus Brinkmann wrote: > > The reason I could not continue testing the user tss is that > > the i386_io_port_add call can't find the device -> io_port mapping. > > It turns out that the mach_device_t address registered with io_port_create > doesn't match the mach_device_t address used to lookup the device again. > I don't know why (yet).
The i386_io_port_add and i386_io_port_remove do not convert the device_t to a mach_device_t as the other device RPCs for i386 (this is connected to the glue code in i386/i386at/i386at_ds_routines.c, which is introduces another level of indirection for device RPCs, without changing the io_port rpcs as well). I have fixed this, and i386_io_port_add finds the i/o port list now. However, the I/O permission are not correctly updated, I still get an Illegal Instruction exception. So I am continuing to debug this. The below patch is to only fix this particular problem. It's as ugly as the rest of the glue code :) Thanks, Marcus --- /mnt/marcus/gnu/cvs/gnumach/i386/i386/iopb.c Tue Feb 25 22:27:09 1997 +++ i386/i386/iopb.c Sun Oct 7 18:20:34 2001 @@ -307,11 +317,21 @@ /* * Add an IO mapping to a thread. */ +#ifdef i386 +kern_return_t +i386_io_port_add( + thread_t thread, + device_t d) +#else kern_return_t i386_io_port_add( thread_t thread, mach_device_t device) +#endif { +#ifdef i386 + mach_device_t device = d->emul_data; +#endif pcb_t pcb; iopb_tss_t io_tss, new_io_tss; io_port_t io_port; @@ -406,11 +429,21 @@ /* * Remove an IO mapping from a thread. */ +#ifdef i386 +kern_return_t +i386_io_port_remove(thread, d) + thread_t thread; + device_t d; +#else kern_return_t i386_io_port_remove(thread, device) thread_t thread; mach_device_t device; +#endif { +#ifdef i386 + mach_device_t device = d->emul_data; +#endif pcb_t pcb; iopb_tss_t io_tss; io_port_t io_port; -- `Rhubarb is no Egyptian god.' Debian http://www.debian.org [EMAIL PROTECTED] Marcus Brinkmann GNU http://www.gnu.org [EMAIL PROTECTED] [EMAIL PROTECTED] http://www.marcus-brinkmann.de _______________________________________________ Bug-hurd mailing list [EMAIL PROTECTED] http://mail.gnu.org/mailman/listinfo/bug-hurd