aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/oprofile/oprof.c
diff options
context:
space:
mode:
authorRobert Richter <robert.richter@amd.com>2010-10-04 21:09:36 +0200
committerRobert Richter <robert.richter@amd.com>2010-10-12 17:25:06 +0200
commit7df01d96b295e400167e78061b81d4c91630b12d (patch)
tree52782cc1d78c24030d627f719cdaa29846c42efb /drivers/oprofile/oprof.c
parent0361e02342f60b64a7075755d5851ed4e6f98c7d (diff)
downloadkernel_samsung_smdk4412-7df01d96b295e400167e78061b81d4c91630b12d.zip
kernel_samsung_smdk4412-7df01d96b295e400167e78061b81d4c91630b12d.tar.gz
kernel_samsung_smdk4412-7df01d96b295e400167e78061b81d4c91630b12d.tar.bz2
oprofile: disable write access to oprofilefs while profiler is running
Oprofile counters are setup when profiling is disabled. Thus, writing to oprofilefs has no immediate effect. Changes are updated only after oprofile is reenabled. To keep userland and kernel states synchronized, we now allow configuration of oprofile only if profiling is disabled. In this case it checks if the profiler is running and then disables write access to oprofilefs by returning -EBUSY. The change should be backward compatible with current oprofile userland daemon. Acked-by: Maynard Johnson <maynardj@us.ibm.com> Cc: William Cohen <wcohen@redhat.com> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Signed-off-by: Robert Richter <robert.richter@amd.com>
Diffstat (limited to 'drivers/oprofile/oprof.c')
-rw-r--r--drivers/oprofile/oprof.c21
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c
index b4a6857..f9bda64 100644
--- a/drivers/oprofile/oprof.c
+++ b/drivers/oprofile/oprof.c
@@ -225,26 +225,17 @@ post_sync:
mutex_unlock(&start_mutex);
}
-int oprofile_set_backtrace(unsigned long val)
+int oprofile_set_ulong(unsigned long *addr, unsigned long val)
{
- int err = 0;
+ int err = -EBUSY;
mutex_lock(&start_mutex);
-
- if (oprofile_started) {
- err = -EBUSY;
- goto out;
+ if (!oprofile_started) {
+ *addr = val;
+ err = 0;
}
-
- if (!oprofile_ops.backtrace) {
- err = -EINVAL;
- goto out;
- }
-
- oprofile_backtrace_depth = val;
-
-out:
mutex_unlock(&start_mutex);
+
return err;
}