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 | 474c256841074b913e76e392082373e12103a75d (patch) | |
tree | 64f6e504e68b8345b1199898c9b03a80e7becee5 /arch/i386 | |
parent | 273819a2d982faace30e587b86a0683882251fe7 (diff) |
[PATCH] i386: 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/i386')
-rw-r--r-- | arch/i386/mm/fault.c | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/arch/i386/mm/fault.c b/arch/i386/mm/fault.c index f7279468323a..0ce86168a0b1 100644 --- a/arch/i386/mm/fault.c +++ b/arch/i386/mm/fault.c | |||
@@ -30,18 +30,20 @@ | |||
30 | 30 | ||
31 | extern void die(const char *,struct pt_regs *,long); | 31 | extern void die(const char *,struct pt_regs *,long); |
32 | 32 | ||
33 | #ifdef CONFIG_KPROBES | 33 | static ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain); |
34 | ATOMIC_NOTIFIER_HEAD(notify_page_fault_chain); | 34 | |
35 | int register_page_fault_notifier(struct notifier_block *nb) | 35 | int register_page_fault_notifier(struct notifier_block *nb) |
36 | { | 36 | { |
37 | vmalloc_sync_all(); | 37 | vmalloc_sync_all(); |
38 | return atomic_notifier_chain_register(¬ify_page_fault_chain, nb); | 38 | return atomic_notifier_chain_register(¬ify_page_fault_chain, nb); |
39 | } | 39 | } |
40 | EXPORT_SYMBOL_GPL(register_page_fault_notifier); | ||
40 | 41 | ||
41 | int unregister_page_fault_notifier(struct notifier_block *nb) | 42 | int unregister_page_fault_notifier(struct notifier_block *nb) |
42 | { | 43 | { |
43 | return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb); | 44 | return atomic_notifier_chain_unregister(¬ify_page_fault_chain, nb); |
44 | } | 45 | } |
46 | EXPORT_SYMBOL_GPL(unregister_page_fault_notifier); | ||
45 | 47 | ||
46 | static inline int notify_page_fault(enum die_val val, const char *str, | 48 | static inline int notify_page_fault(enum die_val val, const char *str, |
47 | struct pt_regs *regs, long err, int trap, int sig) | 49 | struct pt_regs *regs, long err, int trap, int sig) |
@@ -55,14 +57,6 @@ static inline int notify_page_fault(enum die_val val, const char *str, | |||
55 | }; | 57 | }; |
56 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); | 58 | return atomic_notifier_call_chain(¬ify_page_fault_chain, val, &args); |
57 | } | 59 | } |
58 | #else | ||
59 | static inline int notify_page_fault(enum die_val val, const char *str, | ||
60 | struct pt_regs *regs, long err, int trap, int sig) | ||
61 | { | ||
62 | return NOTIFY_DONE; | ||
63 | } | ||
64 | #endif | ||
65 | |||
66 | 60 | ||
67 | /* | 61 | /* |
68 | * Unlock any spinlocks which will prevent us from getting the | 62 | * Unlock any spinlocks which will prevent us from getting the |