diff options
author | Andi Kleen <ak@suse.de> | 2006-09-26 04:52:35 -0400 |
---|---|---|
committer | Andi Kleen <andi@basil.nowhere.org> | 2006-09-26 04:52:35 -0400 |
commit | 273819a2d982faace30e587b86a0683882251fe7 (patch) | |
tree | b2d944c5fcbd85b60e6103484d4c760ce29df98d /arch/x86_64/mm | |
parent | 5e4edbb711417be40f350a319db39888a4edd450 (diff) |
[PATCH] make fault notifier unconditional and export it
It's needed for external debuggers and overhead is very small.
Also make the actual notifier chain they use static
Cc: jbeulich@novell.com
Signed-off-by: Andi Kleen <ak@suse.de>
Diffstat (limited to 'arch/x86_64/mm')
-rw-r--r-- | arch/x86_64/mm/fault.c | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/arch/x86_64/mm/fault.c b/arch/x86_64/mm/fault.c index 449a437f5d70..3ae3e7bb2fce 100644 --- a/arch/x86_64/mm/fault.c +++ b/arch/x86_64/mm/fault.c | |||
@@ -40,8 +40,7 @@ | |||
40 | #define PF_RSVD (1<<3) | 40 | #define PF_RSVD (1<<3) |
41 | #define PF_INSTR (1<<4) | 41 | #define PF_INSTR (1<<4) |
42 | 42 | ||
43 | #ifdef CONFIG_KPROBES | 43 | static ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain); |
44 | ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain); | ||
45 | 44 | ||
46 | /* Hook to register for page fault notifications */ | 45 | /* Hook to register for page fault notifications */ |
47 | int register_page_fault_notifier(struct notifier_block *nb) | 46 | int register_page_fault_notifier(struct notifier_block *nb) |
@@ -49,11 +48,13 @@ int register_page_fault_notifier(struct notifier_block *nb) | |||
49 | vmalloc_sync_all(); | 48 | vmalloc_sync_all(); |
50 | return atomic_notifier_chain_register(¬ify_page_fault_chain, nb); | 49 | return atomic_notifier_chain_register(¬ify_page_fault_chain, nb); |
51 | } | 50 | } |
51 | EXPORT_SYMBOL_GPL(register_page_fault_notifier); | ||
52 | 52 | ||
53 | int unregister_page_fault_notifier(struct notifier_block *nb) | 53 | int unregister_page_fault_notifier(struct notifier_block *nb) |
54 | { | 54 | { |
55 | return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb); | 55 | return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb); |
56 | } | 56 | } |
57 | EXPORT_SYMBOL_GPL(unregister_page_fault_notifier); | ||
57 | 58 | ||
58 | static inline int notify_page_fault(enum die_val val, const char *str, | 59 | static inline int notify_page_fault(enum die_val val, const char *str, |
59 | struct pt_regs *regs, long err, int trap, int sig) | 60 | struct pt_regs *regs, long err, int trap, int sig) |
@@ -67,13 +68,6 @@ static inline int notify_page_fault(enum die_val val, const char *str, | |||
67 | }; | 68 | }; |
68 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); | 69 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); |
69 | } | 70 | } |
70 | #else | ||
71 | static inline int notify_page_fault(enum die_val val, const char *str, | ||
72 | struct pt_regs *regs, long err, int trap, int sig) | ||
73 | { | ||
74 | return NOTIFY_DONE; | ||
75 | } | ||
76 | #endif | ||
77 | 71 | ||
78 | void bust_spinlocks(int yes) | 72 | void bust_spinlocks(int yes) |
79 | { | 73 | { |