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)); |
