diff options
-rw-r--r-- | include/linux/profile.h | 13 | ||||
-rw-r--r-- | kernel/profile.c | 24 |
2 files changed, 0 insertions, 37 deletions
diff --git a/include/linux/profile.h b/include/linux/profile.h index a0fc32279fc0..21123902366d 100644 --- a/include/linux/profile.h +++ b/include/linux/profile.h | |||
@@ -82,9 +82,6 @@ int task_handoff_unregister(struct notifier_block * n); | |||
82 | int profile_event_register(enum profile_type, struct notifier_block * n); | 82 | int profile_event_register(enum profile_type, struct notifier_block * n); |
83 | int profile_event_unregister(enum profile_type, struct notifier_block * n); | 83 | int profile_event_unregister(enum profile_type, struct notifier_block * n); |
84 | 84 | ||
85 | int register_timer_hook(int (*hook)(struct pt_regs *)); | ||
86 | void unregister_timer_hook(int (*hook)(struct pt_regs *)); | ||
87 | |||
88 | struct pt_regs; | 85 | struct pt_regs; |
89 | 86 | ||
90 | #else | 87 | #else |
@@ -135,16 +132,6 @@ static inline int profile_event_unregister(enum profile_type t, struct notifier_ | |||
135 | #define profile_handoff_task(a) (0) | 132 | #define profile_handoff_task(a) (0) |
136 | #define profile_munmap(a) do { } while (0) | 133 | #define profile_munmap(a) do { } while (0) |
137 | 134 | ||
138 | static inline int register_timer_hook(int (*hook)(struct pt_regs *)) | ||
139 | { | ||
140 | return -ENOSYS; | ||
141 | } | ||
142 | |||
143 | static inline void unregister_timer_hook(int (*hook)(struct pt_regs *)) | ||
144 | { | ||
145 | return; | ||
146 | } | ||
147 | |||
148 | #endif /* CONFIG_PROFILING */ | 135 | #endif /* CONFIG_PROFILING */ |
149 | 136 | ||
150 | #endif /* _LINUX_PROFILE_H */ | 137 | #endif /* _LINUX_PROFILE_H */ |
diff --git a/kernel/profile.c b/kernel/profile.c index 1f391819c42f..dc3384ee874e 100644 --- a/kernel/profile.c +++ b/kernel/profile.c | |||
@@ -37,9 +37,6 @@ struct profile_hit { | |||
37 | #define NR_PROFILE_HIT (PAGE_SIZE/sizeof(struct profile_hit)) | 37 | #define NR_PROFILE_HIT (PAGE_SIZE/sizeof(struct profile_hit)) |
38 | #define NR_PROFILE_GRP (NR_PROFILE_HIT/PROFILE_GRPSZ) | 38 | #define NR_PROFILE_GRP (NR_PROFILE_HIT/PROFILE_GRPSZ) |
39 | 39 | ||
40 | /* Oprofile timer tick hook */ | ||
41 | static int (*timer_hook)(struct pt_regs *) __read_mostly; | ||
42 | |||
43 | static atomic_t *prof_buffer; | 40 | static atomic_t *prof_buffer; |
44 | static unsigned long prof_len, prof_shift; | 41 | static unsigned long prof_len, prof_shift; |
45 | 42 | ||
@@ -208,25 +205,6 @@ int profile_event_unregister(enum profile_type type, struct notifier_block *n) | |||
208 | } | 205 | } |
209 | EXPORT_SYMBOL_GPL(profile_event_unregister); | 206 | EXPORT_SYMBOL_GPL(profile_event_unregister); |
210 | 207 | ||
211 | int register_timer_hook(int (*hook)(struct pt_regs *)) | ||
212 | { | ||
213 | if (timer_hook) | ||
214 | return -EBUSY; | ||
215 | timer_hook = hook; | ||
216 | return 0; | ||
217 | } | ||
218 | EXPORT_SYMBOL_GPL(register_timer_hook); | ||
219 | |||
220 | void unregister_timer_hook(int (*hook)(struct pt_regs *)) | ||
221 | { | ||
222 | WARN_ON(hook != timer_hook); | ||
223 | timer_hook = NULL; | ||
224 | /* make sure all CPUs see the NULL hook */ | ||
225 | synchronize_sched(); /* Allow ongoing interrupts to complete. */ | ||
226 | } | ||
227 | EXPORT_SYMBOL_GPL(unregister_timer_hook); | ||
228 | |||
229 | |||
230 | #ifdef CONFIG_SMP | 208 | #ifdef CONFIG_SMP |
231 | /* | 209 | /* |
232 | * Each cpu has a pair of open-addressed hashtables for pending | 210 | * Each cpu has a pair of open-addressed hashtables for pending |
@@ -436,8 +414,6 @@ void profile_tick(int type) | |||
436 | { | 414 | { |
437 | struct pt_regs *regs = get_irq_regs(); | 415 | struct pt_regs *regs = get_irq_regs(); |
438 | 416 | ||
439 | if (type == CPU_PROFILING && timer_hook) | ||
440 | timer_hook(regs); | ||
441 | if (!user_mode(regs) && prof_cpu_mask != NULL && | 417 | if (!user_mode(regs) && prof_cpu_mask != NULL && |
442 | cpumask_test_cpu(smp_processor_id(), prof_cpu_mask)) | 418 | cpumask_test_cpu(smp_processor_id(), prof_cpu_mask)) |
443 | profile_hit(type, (void *)profile_pc(regs)); | 419 | profile_hit(type, (void *)profile_pc(regs)); |