| Index: base/profiler/stack_sampling_profiler.h
|
| diff --git a/base/profiler/stack_sampling_profiler.h b/base/profiler/stack_sampling_profiler.h
|
| index 622f6e5764a5b4e59fbf0a6eed6c7d328d737fc3..d2db971c96f42812a2c624d69a796c77aa9578a8 100644
|
| --- a/base/profiler/stack_sampling_profiler.h
|
| +++ b/base/profiler/stack_sampling_profiler.h
|
| @@ -221,6 +221,27 @@ class BASE_EXPORT StackSamplingProfiler {
|
| // whichever occurs first.
|
| void Stop();
|
|
|
| + // Stops all active profiles and cleans up any resources in anticipation of
|
| + // a shutdown of the current process.
|
| + static void Shutdown();
|
| +
|
| + // Resets the "shutdown" state so that the sampling thread can be restarted.
|
| + static void UndoShutdownForTesting();
|
| +
|
| + // Returns whether the sampling thread is currently running or not.
|
| + static bool IsSamplingThreadRunningForTesting();
|
| +
|
| + // Sets the auto-shutdown delay time for the sampling thread, in ms. Set this
|
| + // to zero to disable it.
|
| + static void SetSamplingThreadIdleShutdownTimeForTesting(int shutdown_ms);
|
| +
|
| + // Initiates an idle shutdown task, as though the idle timer had expired,
|
| + // causing the thread to exit if there are no more sampling tasks pending.
|
| + // This returns immediately. Watch IsSamplingThreadRunningForTesting() to
|
| + // know when the thread has exited, though it will never do so if it is
|
| + // not idle.
|
| + static void InitiateSamplingThreadIdleShutdownForTesting();
|
| +
|
| // Set the current system state that is recorded with each captured stack
|
| // frame. This is thread-safe so can be called from anywhere. The parameter
|
| // value should be from an enumeration of the appropriate type with values
|
| @@ -233,44 +254,7 @@ class BASE_EXPORT StackSamplingProfiler {
|
| private:
|
| // SamplingThread is a separate thread used to suspend and sample stacks from
|
| // the target thread.
|
| - class SamplingThread : public PlatformThread::Delegate {
|
| - public:
|
| - // Samples stacks using |native_sampler|. When complete, invokes
|
| - // |completed_callback| with the collected call stack profiles.
|
| - // |completed_callback| must be callable on any thread.
|
| - SamplingThread(std::unique_ptr<NativeStackSampler> native_sampler,
|
| - const SamplingParams& params,
|
| - const CompletedCallback& completed_callback);
|
| - ~SamplingThread() override;
|
| -
|
| - // PlatformThread::Delegate:
|
| - void ThreadMain() override;
|
| -
|
| - void Stop();
|
| -
|
| - private:
|
| - // Collects |profile| from a single burst. If the profiler was stopped
|
| - // during collection, sets |was_stopped| and provides the set of samples
|
| - // collected up to that point.
|
| - void CollectProfile(CallStackProfile* profile, TimeDelta* elapsed_time,
|
| - bool* was_stopped);
|
| -
|
| - // Collects call stack profiles from all bursts, or until the sampling is
|
| - // stopped. If stopped before complete, the last profile in
|
| - // |call_stack_profiles| may contain a partial burst.
|
| - void CollectProfiles(CallStackProfiles* profiles);
|
| -
|
| - std::unique_ptr<NativeStackSampler> native_sampler_;
|
| - const SamplingParams params_;
|
| -
|
| - // If Stop() is called, it signals this event to force the sampling to
|
| - // terminate before all the samples specified in |params_| are collected.
|
| - WaitableEvent stop_event_;
|
| -
|
| - const CompletedCallback completed_callback_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(SamplingThread);
|
| - };
|
| + class SamplingThread;
|
|
|
| // Adds annotations to a Sample.
|
| static void RecordAnnotations(Sample* sample);
|
| @@ -287,11 +271,11 @@ class BASE_EXPORT StackSamplingProfiler {
|
|
|
| const SamplingParams params_;
|
|
|
| - std::unique_ptr<SamplingThread> sampling_thread_;
|
| - PlatformThreadHandle sampling_thread_handle_;
|
| -
|
| const CompletedCallback completed_callback_;
|
|
|
| + // An ID uniquely identifying this collection to the sampling thread.
|
| + int collection_id_ = -1;
|
| +
|
| // Stored until it can be passed to the NativeStackSampler created in Start().
|
| NativeStackSamplerTestDelegate* const test_delegate_;
|
|
|
|
|