diff options
author | Robert Richter <robert.richter@amd.com> | 2010-10-04 21:09:36 +0200 |
---|---|---|
committer | Robert Richter <robert.richter@amd.com> | 2010-10-12 17:25:06 +0200 |
commit | 7df01d96b295e400167e78061b81d4c91630b12d (patch) | |
tree | 52782cc1d78c24030d627f719cdaa29846c42efb /drivers/oprofile/oprof.c | |
parent | 0361e02342f60b64a7075755d5851ed4e6f98c7d (diff) | |
download | lwn-7df01d96b295e400167e78061b81d4c91630b12d.tar.gz lwn-7df01d96b295e400167e78061b81d4c91630b12d.zip |
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.c | 21 |
1 files changed, 6 insertions, 15 deletions
diff --git a/drivers/oprofile/oprof.c b/drivers/oprofile/oprof.c index b4a685719dba..f9bda64fcd1b 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; } |