> > >>I need to implement the SharedUserData, which is a page of memory >>located at (KERNEL_BASE - 0x10000) shared between user space (read-only >>access) and kernel space. >> >I don't know how to get the 'page fault' trap for a 'valid' user >page on all systems that wine might run on. Certainly the assumption >that (KERNEL_BASE - 0x10000) is available is probably false... > >However you don't actually need a valid user address, a kernel >address (ie one that is always invalid) will do. > I'm not sure to understand what you mean. The user program will try to access KERNEL_BASE - 0x10000 (which is 0x7ffe0000 on IA-32). I need that to trigger a segfault.
>Catching SIGSEGV might be enough - but I'm not totally >certain how you can get the value back into the main >process context (emulate the instruction and modify the >saved program counter ????) > That's what I thought at first. I could also try to set a hardware breakpoint for read/write accesses at that address, but that's highly not portable, and won't work nicely with a debugger. If someone has a better idea I'll be glad to hear it. Laurent Pinchart