Follow-up Comment #2, bug #15295 (project hurd): Trying to apply patch #3216 , patch #3219 , and patch #4737 does work as expected for single-threaded programs like ioport/ioport2/ioport3. I patched my Hurd console to use i386_io_port_add, it now works.
However, some illegal instructions still happen because for now, gnumach's io permissions are thread-specific, so that only the thread that called i386_io_port_all has i/o access. I guess this will be a problem for almost every program: people usually expect i/o permissions to be for the whole task, not for a single thread. Some libraries will even create threads and call some callbacks within them, and these callbacks could potentially need i/o permissions (this is what happens with the Hurd console). So I'd say we should turn gnumach to handle io permissions per task. This doesn't pose any technical problem, since until now every task/thread was using the kernel tss ; it's just a matter of storing the tss per task, not per thread. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?func=detailitem&item_id=15295> _______________________________________________ Message posté via/par Savannah http://savannah.gnu.org/ _______________________________________________ Bug-hurd mailing list Bug-hurd@gnu.org http://lists.gnu.org/mailman/listinfo/bug-hurd