This I assume is related to the `gnumach, task based IO ports'. Explanation behind the changes, why etc are needed. I haven't looked at the patch yet.
2006-01-02 Samuel Thibault <[EMAIL PROTECTED]> * iopl.c (iopl_emulate): TSS is now task-based. Fix TSS and locking accordingly. diff -urp gnumach-mine-4-more_ports/i386/i386at/iopl.c gnumach-mine-5-io_per_task/i386/i386at/iopl.c --- gnumach-mine-4-more_ports/i386/i386at/iopl.c 2006-01-02 18:45:17.000000000 +0100 +++ gnumach-mine-5-io_per_task/i386/i386at/iopl.c 2006-01-02 16:30:19.000000000 +0100 @@ -217,10 +217,15 @@ iopl_emulate(regs, opcode, io_port) int io_port; { iopb_tss_t iopb; + task_t task; - iopb = current_thread()->pcb->ims.io_tss; - if (iopb == 0) + task = current_thread()->task; + task_lock(task); + iopb = task->machine.io_tss; + if (iopb == 0) { + task_unlock(task); return FALSE; /* no IO mapped */ + } /* * Handle outb to the timer control port, @@ -235,11 +240,14 @@ iopl_emulate(regs, opcode, io_port) && (opcode == 0xe6 || opcode == 0xee) /* outb */ && (io_byte & 0xc0) == 0x80) /* timer 2 */ { + task_unlock(task); outb(io_port, io_byte); return TRUE; } + task_unlock(task); return FALSE; /* invalid IO to port 42 */ } + task_unlock(task); /* * If the thread has the IOPL device mapped, and _______________________________________________ Bug-hurd mailing list Bug-hurd@gnu.org http://lists.gnu.org/mailman/listinfo/bug-hurd