Messages in this thread | | | Subject | Re: Catching signals in a Kernel Module? | Date | Thu, 12 Aug 1999 19:43:48 +0100 (BST) | From | Alan Cox <> |
| |
> my module working. However, when a user tries to read or > write an unsupported MSR, the Intel Pentium II returns with a GP(0). > This causes my module to die with a SEGV. > > How can I catch this signal within my module? I have
Be careful about signal versus exception. Signal has a specific meaning in Unix that is different.
> the Linux Device Drivers book, but it doesn't > appear to cover this type of problem.
I'm not suprised 8). You can do this. The best example of it is the copy_*_user functions (include/asm-i386/uaccess.h)
You want the asm code to look like
1: wrmsr blah 2: .section .fixup, "ax" 3: code to handle fault jmp 2b # Back to the original code path .previous .section __ex_table, "a" .align 4 .long 1b,3b .previous
What happens when you get a fault is the kernel walks the exception table looking for the fault address (thats the piece in the __ex_table. If it finds the address it jumps to the fault handler address. If not it follows the normal path.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.tux.org/lkml/
| |