summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp')
-rw-r--r--contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp100
1 files changed, 51 insertions, 49 deletions
diff --git a/contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp b/contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp
index c19a233..b91c2fe 100644
--- a/contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp
+++ b/contrib/llvm/tools/lldb/source/Host/common/ThreadLauncher.cpp
@@ -1,4 +1,5 @@
-//===-- ThreadLauncher.cpp ---------------------------------------*- C++ -*-===//
+//===-- ThreadLauncher.cpp ---------------------------------------*- C++
+//-*-===//
//
// The LLVM Compiler Infrastructure
//
@@ -8,11 +9,11 @@
//===----------------------------------------------------------------------===//
// lldb Includes
+#include "lldb/Host/ThreadLauncher.h"
#include "lldb/Core/Log.h"
#include "lldb/Host/HostNativeThread.h"
#include "lldb/Host/HostThread.h"
#include "lldb/Host/ThisThread.h"
-#include "lldb/Host/ThreadLauncher.h"
#if defined(_WIN32)
#include "lldb/Host/windows/windows.h"
@@ -21,64 +22,65 @@
using namespace lldb;
using namespace lldb_private;
-HostThread
-ThreadLauncher::LaunchThread(llvm::StringRef name, lldb::thread_func_t thread_function, lldb::thread_arg_t thread_arg, Error *error_ptr, size_t min_stack_byte_size)
-{
- Error error;
- if (error_ptr)
- error_ptr->Clear();
+HostThread ThreadLauncher::LaunchThread(llvm::StringRef name,
+ lldb::thread_func_t thread_function,
+ lldb::thread_arg_t thread_arg,
+ Error *error_ptr,
+ size_t min_stack_byte_size) {
+ Error error;
+ if (error_ptr)
+ error_ptr->Clear();
- // Host::ThreadCreateTrampoline will delete this pointer for us.
- HostThreadCreateInfo *info_ptr = new HostThreadCreateInfo(name.data(), thread_function, thread_arg);
- lldb::thread_t thread;
+ // Host::ThreadCreateTrampoline will delete this pointer for us.
+ HostThreadCreateInfo *info_ptr =
+ new HostThreadCreateInfo(name.data(), thread_function, thread_arg);
+ lldb::thread_t thread;
#ifdef _WIN32
- thread =
- (lldb::thread_t)::_beginthreadex(0, (unsigned)min_stack_byte_size, HostNativeThread::ThreadCreateTrampoline, info_ptr, 0, NULL);
- if (thread == (lldb::thread_t)(-1L))
- error.SetError(::GetLastError(), eErrorTypeWin32);
+ thread = (lldb::thread_t)::_beginthreadex(
+ 0, (unsigned)min_stack_byte_size,
+ HostNativeThread::ThreadCreateTrampoline, info_ptr, 0, NULL);
+ if (thread == (lldb::thread_t)(-1L))
+ error.SetError(::GetLastError(), eErrorTypeWin32);
#else
-
- // ASAN instrumentation adds a lot of bookkeeping overhead on stack frames.
+// ASAN instrumentation adds a lot of bookkeeping overhead on stack frames.
#if __has_feature(address_sanitizer)
- const size_t eight_megabytes = 8 * 1024 * 1024;
- if (min_stack_byte_size < eight_megabytes)
- {
- min_stack_byte_size += eight_megabytes;
- }
+ const size_t eight_megabytes = 8 * 1024 * 1024;
+ if (min_stack_byte_size < eight_megabytes) {
+ min_stack_byte_size += eight_megabytes;
+ }
#endif
- pthread_attr_t *thread_attr_ptr = NULL;
- pthread_attr_t thread_attr;
- bool destroy_attr = false;
- if (min_stack_byte_size > 0)
- {
- if (::pthread_attr_init (&thread_attr) == 0)
- {
- destroy_attr = true;
- size_t default_min_stack_byte_size = 0;
- if (::pthread_attr_getstacksize(&thread_attr, &default_min_stack_byte_size) == 0)
- {
- if (default_min_stack_byte_size < min_stack_byte_size)
- {
- if (::pthread_attr_setstacksize (&thread_attr, min_stack_byte_size) == 0)
- thread_attr_ptr = &thread_attr;
- }
- }
-
+ pthread_attr_t *thread_attr_ptr = NULL;
+ pthread_attr_t thread_attr;
+ bool destroy_attr = false;
+ if (min_stack_byte_size > 0) {
+ if (::pthread_attr_init(&thread_attr) == 0) {
+ destroy_attr = true;
+ size_t default_min_stack_byte_size = 0;
+ if (::pthread_attr_getstacksize(&thread_attr,
+ &default_min_stack_byte_size) == 0) {
+ if (default_min_stack_byte_size < min_stack_byte_size) {
+ if (::pthread_attr_setstacksize(&thread_attr, min_stack_byte_size) ==
+ 0)
+ thread_attr_ptr = &thread_attr;
}
+ }
}
- int err = ::pthread_create(&thread, thread_attr_ptr, HostNativeThread::ThreadCreateTrampoline, info_ptr);
+ }
+ int err =
+ ::pthread_create(&thread, thread_attr_ptr,
+ HostNativeThread::ThreadCreateTrampoline, info_ptr);
- if (destroy_attr)
- ::pthread_attr_destroy(&thread_attr);
+ if (destroy_attr)
+ ::pthread_attr_destroy(&thread_attr);
- error.SetError(err, eErrorTypePOSIX);
+ error.SetError(err, eErrorTypePOSIX);
#endif
- if (error_ptr)
- *error_ptr = error;
- if (!error.Success())
- thread = LLDB_INVALID_HOST_THREAD;
+ if (error_ptr)
+ *error_ptr = error;
+ if (!error.Success())
+ thread = LLDB_INVALID_HOST_THREAD;
- return HostThread(thread);
+ return HostThread(thread);
}
OpenPOWER on IntegriCloud