diff options
author | Rakib Mullick <rakib.mullick@gmail.com> | 2011-05-26 19:26:00 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-26 20:12:37 -0400 |
commit | 6f7bd76f05eb2bfbb48d58c0408a50a7e16b2423 (patch) | |
tree | a6a5c66d200e112cc629b392eafbaa026e1c57bf /kernel/profile.c | |
parent | d98808a253f209465ed9f415c565f4c294a213b8 (diff) |
kernel/profile.c: remove some duplicate code from profile_hits()
profile_hits() has a common check for prof_on and prof_buffer regardless
of SMP or !SMP. So, remove some duplicate code by splitting profile_hits
into two.
[akpm@linux-foundation.org: make do_profile_hits static]
Signed-off-by: Rakib Mullick <rakib.mullick@gmail.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'kernel/profile.c')
-rw-r--r-- | kernel/profile.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/kernel/profile.c b/kernel/profile.c index 14c9f87b9fc9..961b389fe52f 100644 --- a/kernel/profile.c +++ b/kernel/profile.c | |||
@@ -303,14 +303,12 @@ static void profile_discard_flip_buffers(void) | |||
303 | mutex_unlock(&profile_flip_mutex); | 303 | mutex_unlock(&profile_flip_mutex); |
304 | } | 304 | } |
305 | 305 | ||
306 | void profile_hits(int type, void *__pc, unsigned int nr_hits) | 306 | static void do_profile_hits(int type, void *__pc, unsigned int nr_hits) |
307 | { | 307 | { |
308 | unsigned long primary, secondary, flags, pc = (unsigned long)__pc; | 308 | unsigned long primary, secondary, flags, pc = (unsigned long)__pc; |
309 | int i, j, cpu; | 309 | int i, j, cpu; |
310 | struct profile_hit *hits; | 310 | struct profile_hit *hits; |
311 | 311 | ||
312 | if (prof_on != type || !prof_buffer) | ||
313 | return; | ||
314 | pc = min((pc - (unsigned long)_stext) >> prof_shift, prof_len - 1); | 312 | pc = min((pc - (unsigned long)_stext) >> prof_shift, prof_len - 1); |
315 | i = primary = (pc & (NR_PROFILE_GRP - 1)) << PROFILE_GRPSHIFT; | 313 | i = primary = (pc & (NR_PROFILE_GRP - 1)) << PROFILE_GRPSHIFT; |
316 | secondary = (~(pc << 1) & (NR_PROFILE_GRP - 1)) << PROFILE_GRPSHIFT; | 314 | secondary = (~(pc << 1) & (NR_PROFILE_GRP - 1)) << PROFILE_GRPSHIFT; |
@@ -417,16 +415,20 @@ out_free: | |||
417 | #define profile_discard_flip_buffers() do { } while (0) | 415 | #define profile_discard_flip_buffers() do { } while (0) |
418 | #define profile_cpu_callback NULL | 416 | #define profile_cpu_callback NULL |
419 | 417 | ||
420 | void profile_hits(int type, void *__pc, unsigned int nr_hits) | 418 | static void do_profile_hits(int type, void *__pc, unsigned int nr_hits) |
421 | { | 419 | { |
422 | unsigned long pc; | 420 | unsigned long pc; |
423 | |||
424 | if (prof_on != type || !prof_buffer) | ||
425 | return; | ||
426 | pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift; | 421 | pc = ((unsigned long)__pc - (unsigned long)_stext) >> prof_shift; |
427 | atomic_add(nr_hits, &prof_buffer[min(pc, prof_len - 1)]); | 422 | atomic_add(nr_hits, &prof_buffer[min(pc, prof_len - 1)]); |
428 | } | 423 | } |
429 | #endif /* !CONFIG_SMP */ | 424 | #endif /* !CONFIG_SMP */ |
425 | |||
426 | void profile_hits(int type, void *__pc, unsigned int nr_hits) | ||
427 | { | ||
428 | if (prof_on != type || !prof_buffer) | ||
429 | return; | ||
430 | do_profile_hits(type, __pc, nr_hits); | ||
431 | } | ||
430 | EXPORT_SYMBOL_GPL(profile_hits); | 432 | EXPORT_SYMBOL_GPL(profile_hits); |
431 | 433 | ||
432 | void profile_tick(int type) | 434 | void profile_tick(int type) |