diff options
Diffstat (limited to 'xpcom/threads/ThreadStackHelper.h')
-rw-r--r-- | xpcom/threads/ThreadStackHelper.h | 100 |
1 files changed, 0 insertions, 100 deletions
diff --git a/xpcom/threads/ThreadStackHelper.h b/xpcom/threads/ThreadStackHelper.h deleted file mode 100644 index 04bcb7b0ab..0000000000 --- a/xpcom/threads/ThreadStackHelper.h +++ /dev/null @@ -1,100 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_ThreadStackHelper_h -#define mozilla_ThreadStackHelper_h - -#include "mozilla/ThreadHangStats.h" - -#include "GeckoProfiler.h" - -#include <stddef.h> - -#if defined(XP_LINUX) -#include <signal.h> -#include <semaphore.h> -#include <sys/types.h> -#elif defined(XP_WIN) -#include <windows.h> -#endif - -namespace mozilla { - -/** - * ThreadStackHelper is used to retrieve the profiler pseudo-stack of a - * thread, as an alternative of using the profiler to take a profile. - * The target thread first declares an ThreadStackHelper instance; - * then another thread can call ThreadStackHelper::GetStack to retrieve - * the pseudo-stack of the target thread at that instant. - * - * Only non-copying labels are included in the stack, which means labels - * with custom text and markers are not included. - */ -class ThreadStackHelper -{ -public: - typedef Telemetry::HangStack Stack; - -private: - Stack* mStackToFill; - - bool PrepareStackBuffer(Stack& aStack); - void FillStackBuffer(); - void FillThreadContext(void* aContext = nullptr); - -public: - /** - * Initialize ThreadStackHelper. Must be called from main thread. - */ - static void Startup(); - /** - * Uninitialize ThreadStackHelper. Must be called from main thread. - */ - static void Shutdown(); - - /** - * Create a ThreadStackHelper instance targeting the current thread. - */ - ThreadStackHelper(); - - ~ThreadStackHelper(); - - /** - * Retrieve the current pseudostack of the thread associated - * with this ThreadStackHelper. - * - * @param aStack Stack instance to be filled. - */ - void GetStack(Stack& aStack); - - /** - * Retrieve the current native stack of the thread associated - * with this ThreadStackHelper. - * - * @param aNativeStack Stack instance to be filled. - */ - void GetNativeStack(Stack& aStack); - -#if defined(XP_LINUX) -private: - static int sInitialized; - static int sFillStackSignum; - - static void FillStackHandler(int aSignal, siginfo_t* aInfo, void* aContext); - - sem_t mSem; - pid_t mThreadID; - -#elif defined(XP_WIN) -private: - bool mInitialized; - HANDLE mThreadID; - -#endif -}; - -} // namespace mozilla - -#endif // mozilla_ThreadStackHelper_h |