On 2008-04-26 at 21:23:24 [+0200], Jan Klötzke <jan.kloetzke@xxxxxxxxxx> wrote: > Am Samstag, 26. April 2008 schrieb Ingo Weinhold: > > > The problem is that vm_page_fault() will just send a SIGSEGV but the > > > vm86 > > > mode > > > is not interrupted due to signals. In this case we end up in a deadlock > > > because making vm86 (BIOS) calls interruptable doesn't seem to be a good > > > option eighther. > > > > > > Anyway, using vm_soft_fault() specifically for the vm86 case looks like > > > a > > > viable option. I haven't tried it yet because it's declared "static" in > > > vm.cpp. > > > > Mmh, why not just use a fault handler? > > Vm86 mode is counted as "user mode"... Ah, OK. I suppose we could use it nevertheless. Maybe not as interrupt return address as in the other cases, but as a call back function: typedef status_t (*page_fault_callback)(addr_t address, addr_t faultAddress, bool isWrite); In the userland case, vm_page_fault() would invoke it, if specified, and do the signal sending depending on its return value. CU, Ingo