diff options
| author | Robert Richter <robert.richter@amd.com> | 2011-02-11 17:31:44 +0100 | 
|---|---|---|
| committer | Robert Richter <robert.richter@amd.com> | 2011-02-15 11:10:20 +0100 | 
| commit | a0d76247e07abd14968adc4486aaa8e270e9c209 (patch) | |
| tree | bec9fa0f5a3c7b3d1f3c3032900d74f41941ed2d /drivers/oprofile/oprof.c | |
| parent | 997dbb4967da248808850c250182ef2528fff2d1 (diff) | |
| download | olio-linux-3.10-a0d76247e07abd14968adc4486aaa8e270e9c209.tar.xz olio-linux-3.10-a0d76247e07abd14968adc4486aaa8e270e9c209.zip  | |
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/oprof.c')
| -rw-r--r-- | drivers/oprofile/oprof.c | 32 | 
1 files changed, 0 insertions, 32 deletions
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c index 43b01daa91e..f9bda64fcd1 100644 --- a/drivers/oprofile/oprof.c +++ b/drivers/oprofile/oprof.c @@ -239,38 +239,6 @@ int oprofile_set_ulong(unsigned long *addr, unsigned long val)  	return err;  } -#ifdef CONFIG_HAVE_HWSAMPLER -int oprofile_set_hwsampler(unsigned long val) -{ -	int err = 0; - -	mutex_lock(&start_mutex); - -	if (oprofile_started) { -		err = -EBUSY; -		goto out; -	} - -	switch (val) { -	case 1: -		/* Switch to hardware sampling. */ -		__oprofile_timer_exit(); -		err = oprofile_arch_set_hwsampler(&oprofile_ops); -		break; -	case 0: -		printk(KERN_INFO "oprofile: using timer interrupt.\n"); -		err = __oprofile_timer_init(&oprofile_ops); -		break; -	default: -		err = -EINVAL; -	} - -out: -	mutex_unlock(&start_mutex); -	return err; -} -#endif /* CONFIG_HAVE_HWSAMPLER */ -  static int __init oprofile_init(void)  {  	int err;  |