3 ms·
Of interest is iopl() becoming emulated and losing the ability to grant user code the ability to disable interrupts. I wonder what user code might have broken.
by burfog 7y ago
Of interest is iopl() becoming emulated and losing the ability to grant user code the ability to disable interrupts. I wonder what user code might have broken.
The trouble with interrupts being disabled was that it wasn't too well defined for situations with system calls and exceptions.
I feel like the interrupt functionality could have been usefully emulated. For example, it could have acted to prevent execution of all tasks which could be subjected to ptrace by the task that is disabling interrupts. In case the iopl() caller is root on a system without weird SELinux stuff, the emulation of turning off interrupts would stop all the other tasks.
Another emulation approach would be to change the scheduling. To emulate the situation with interrupts off, treat the task as SCHED_FIFO with the highest priority available to the task.