From bc2e00c1c7fbf7871a56f64e93c8539347c180e2 Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Tue, 21 Apr 2009 15:26:16 +0000 Subject: [PATCH] _user_system_profiler_start(): Check the sampling related parameters only when sampling is requested at all. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30294 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/debug/system_profiler.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/system/kernel/debug/system_profiler.cpp b/src/system/kernel/debug/system_profiler.cpp index e3174159f2..1d468e3e28 100644 --- a/src/system/kernel/debug/system_profiler.cpp +++ b/src/system/kernel/debug/system_profiler.cpp @@ -833,14 +833,19 @@ _user_system_profiler_start(struct system_profiler_parameters* userParameters) if (error != B_OK) return error; - if (areaInfo.team != team || parameters.stack_depth < 1) + if (areaInfo.team != team) return B_BAD_VALUE; - if (parameters.interval < B_DEBUG_MIN_PROFILE_INTERVAL) - parameters.interval = B_DEBUG_MIN_PROFILE_INTERVAL; + if ((parameters.flags & B_SYSTEM_PROFILER_SAMPLING_EVENTS) != 0) { + if (parameters.stack_depth < 1) + return B_BAD_VALUE; - if (parameters.stack_depth > B_DEBUG_STACK_TRACE_DEPTH) - parameters.stack_depth = B_DEBUG_STACK_TRACE_DEPTH; + if (parameters.interval < B_DEBUG_MIN_PROFILE_INTERVAL) + parameters.interval = B_DEBUG_MIN_PROFILE_INTERVAL; + + if (parameters.stack_depth > B_DEBUG_STACK_TRACE_DEPTH) + parameters.stack_depth = B_DEBUG_STACK_TRACE_DEPTH; + } // quick check to see whether we do already have a profiler installed InterruptsSpinLocker locker(sProfilerLock);