diff options
author | Pekka Paalanen <pq@iki.fi> | 2008-05-12 15:20:56 -0400 |
---|---|---|
committer | Thomas Gleixner <tglx@linutronix.de> | 2008-05-23 15:16:38 -0400 |
commit | 86069782d62e731b4835a0cf8eb7d1d0e17cf306 (patch) | |
tree | e6268f782a96d7ce808f354b83be69d4b349659d /include/asm-x86 | |
parent | 8f0f996e80b980fba07d11961d96a5fefb60976a (diff) |
x86: add a list for custom page fault handlers.
Provides kernel modules a way to register custom page fault handlers.
On every page fault this will call a list of registered functions. The
functions may handle the fault and force do_page_fault() to return
immediately.
This functionality is similar to the now removed page fault notifiers.
Custom page fault handlers are used by debugging and reverse engineering
tools. Mmiotrace is one such tool and a patch to add it into the tree
will follow.
The custom page fault handlers are called earlier in do_page_fault()
than the page fault notifiers were.
Signed-off-by: Pekka Paalanen <pq@iki.fi>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'include/asm-x86')
-rw-r--r-- | include/asm-x86/kdebug.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/asm-x86/kdebug.h b/include/asm-x86/kdebug.h index 96651bb59ba1..a80f2d6cc737 100644 --- a/include/asm-x86/kdebug.h +++ b/include/asm-x86/kdebug.h | |||
@@ -35,4 +35,13 @@ extern void show_regs(struct pt_regs *regs); | |||
35 | extern unsigned long oops_begin(void); | 35 | extern unsigned long oops_begin(void); |
36 | extern void oops_end(unsigned long, struct pt_regs *, int signr); | 36 | extern void oops_end(unsigned long, struct pt_regs *, int signr); |
37 | 37 | ||
38 | struct pf_handler { | ||
39 | struct hlist_node hlist; | ||
40 | int (*handler)(struct pt_regs *regs, unsigned long error_code, | ||
41 | unsigned long address); | ||
42 | }; | ||
43 | |||
44 | extern void register_page_fault_handler(struct pf_handler *new_pfh); | ||
45 | extern void unregister_page_fault_handler(struct pf_handler *old_pfh); | ||
46 | |||
38 | #endif | 47 | #endif |