diff options
author | Robert Richter <robert.richter@amd.com> | 2011-02-11 16:31:44 (GMT) |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2011-02-15 10:10:20 (GMT) |
commit | a0d76247e07abd14968adc4486aaa8e270e9c209 (patch) | |
tree | bec9fa0f5a3c7b3d1f3c3032900d74f41941ed2d /drivers/oprofile/timer_int.c | |
parent | 997dbb4967da248808850c250182ef2528fff2d1 (diff) | |
download | linux-a0d76247e07abd14968adc4486aaa8e270e9c209.tar.xz |
oprofile, s390: Rework hwsampler implementation
This patch is a rework of the hwsampler oprofile implementation that
has been applied recently. Now there are less non-architectural
changes. The only changes are:
* introduction of oprofile_add_ext_hw_sample(), and
* removal of section attributes of oprofile_timer_init/_exit().
To setup hwsampler for oprofile we need to modify start()/stop()
callbacks and additional hwsampler control files in oprofilefs. We do
not reinitialize the timer or hwsampler mode by restarting calling
init/exit() anymore, instead hwsampler_running is used to switch the
mode directly in oprofile_hwsampler_start/_stop(). For locking reasons
there is also hwsampler_file that reflects the value in oprofilefs.
The overall diffstat of the oprofile s390 hwsampler implemenation
shows the low impact to non-architectural code:
arch/Kconfig | 3 +
arch/s390/Kconfig | 1 +
arch/s390/oprofile/Makefile | 2 +-
arch/s390/oprofile/hwsampler.c | 1256 ++++++++++++++++++++++++++++++++++
arch/s390/oprofile/hwsampler.h | 113 +++
arch/s390/oprofile/hwsampler_files.c | 162 +++++
arch/s390/oprofile/init.c | 6 +-
drivers/oprofile/cpu_buffer.c | 24 +-
drivers/oprofile/timer_int.c | 4 +-
include/linux/oprofile.h | 7 +
10 files changed, 1567 insertions(+), 11 deletions(-)
Acked-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'drivers/oprofile/timer_int.c')
-rw-r--r-- | drivers/oprofile/timer_int.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/drivers/oprofile/timer_int.c b/drivers/oprofile/timer_int.c index 0099a45..3ef4462 100644 --- a/drivers/oprofile/timer_int.c +++ b/drivers/oprofile/timer_int.c @@ -97,13 +97,14 @@ static struct notifier_block __refdata oprofile_cpu_notifier = { .notifier_call = oprofile_cpu_notify, }; -int __oprofile_timer_init(struct oprofile_operations *ops) +int oprofile_timer_init(struct oprofile_operations *ops) { int rc; rc = register_hotcpu_notifier(&oprofile_cpu_notifier); if (rc) return rc; + ops->create_files = NULL; ops->setup = NULL; ops->shutdown = NULL; ops->start = oprofile_hrtimer_start; @@ -112,17 +113,7 @@ int __oprofile_timer_init(struct oprofile_operations *ops) return 0; } -int __init oprofile_timer_init(struct oprofile_operations *ops) -{ - return __oprofile_timer_init(ops); -} - -void __oprofile_timer_exit(void) +void oprofile_timer_exit(void) { unregister_hotcpu_notifier(&oprofile_cpu_notifier); } - -void __exit oprofile_timer_exit(void) -{ - __oprofile_timer_exit(); -} |