diff options
Diffstat (limited to 'include/lldb/Host/HostNativeThreadBase.h')
-rw-r--r-- | include/lldb/Host/HostNativeThreadBase.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/include/lldb/Host/HostNativeThreadBase.h b/include/lldb/Host/HostNativeThreadBase.h new file mode 100644 index 000000000000..c89c6e16533e --- /dev/null +++ b/include/lldb/Host/HostNativeThreadBase.h @@ -0,0 +1,53 @@ +//===-- HostNativeThreadBase.h ----------------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef lldb_Host_HostNativeThreadBase_h_ +#define lldb_Host_HostNativeThreadBase_h_ + +#include "lldb/Core/Error.h" +#include "lldb/lldb-defines.h" +#include "lldb/lldb-types.h" + +namespace lldb_private +{ + +#if defined(_WIN32) +#define THREAD_ROUTINE __stdcall +#else +#define THREAD_ROUTINE +#endif + +class HostNativeThreadBase +{ + friend class ThreadLauncher; + DISALLOW_COPY_AND_ASSIGN(HostNativeThreadBase); + + public: + HostNativeThreadBase(); + explicit HostNativeThreadBase(lldb::thread_t thread); + virtual ~HostNativeThreadBase() {} + + virtual Error Join(lldb::thread_result_t *result) = 0; + virtual Error Cancel() = 0; + virtual bool IsJoinable() const; + virtual void Reset(); + lldb::thread_t Release(); + + lldb::thread_t GetSystemHandle() const; + lldb::thread_result_t GetResult() const; + + protected: + static lldb::thread_result_t THREAD_ROUTINE ThreadCreateTrampoline(lldb::thread_arg_t arg); + + lldb::thread_t m_thread; + lldb::thread_result_t m_result; +}; +} + +#endif |