003 File Manager
Current Path:
/usr/src/contrib/llvm-project/lldb/source/Host/common
usr
/
src
/
contrib
/
llvm-project
/
lldb
/
source
/
Host
/
common
/
📁
..
📄
Editline.cpp
(52.55 KB)
📄
File.cpp
(19.23 KB)
📄
FileAction.cpp
(2.16 KB)
📄
FileCache.cpp
(3.38 KB)
📄
FileSystem.cpp
(14.09 KB)
📄
GetOptInc.cpp
(12.53 KB)
📄
Host.cpp
(21.11 KB)
📄
HostInfoBase.cpp
(12.08 KB)
📄
HostNativeThreadBase.cpp
(1.92 KB)
📄
HostProcess.cpp
(1.5 KB)
📄
HostThread.cpp
(1.47 KB)
📄
LZMA.cpp
(4.76 KB)
📄
LockFileBase.cpp
(2.25 KB)
📄
MainLoop.cpp
(10.67 KB)
📄
MonitoringProcessLauncher.cpp
(2.44 KB)
📄
NativeProcessProtocol.cpp
(26.66 KB)
📄
NativeRegisterContext.cpp
(14.02 KB)
📄
NativeThreadProtocol.cpp
(755 B)
📄
NativeWatchpointList.cpp
(941 B)
📄
OptionParser.cpp
(2.38 KB)
📄
PipeBase.cpp
(893 B)
📄
ProcessLaunchInfo.cpp
(11.86 KB)
📄
ProcessRunLock.cpp
(1.43 KB)
📄
PseudoTerminal.cpp
(9.53 KB)
📄
Socket.cpp
(14.42 KB)
📄
SocketAddress.cpp
(8.52 KB)
📄
StringConvert.cpp
(2.53 KB)
📄
TCPSocket.cpp
(9.17 KB)
📄
Terminal.cpp
(6.24 KB)
📄
ThreadLauncher.cpp
(2.54 KB)
📄
UDPSocket.cpp
(4.3 KB)
📄
XML.cpp
(14.23 KB)
Editing: ThreadLauncher.cpp
//===-- ThreadLauncher.cpp ------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // lldb Includes #include "lldb/Host/ThreadLauncher.h" #include "lldb/Host/HostNativeThread.h" #include "lldb/Host/HostThread.h" #include "lldb/Utility/Log.h" #if defined(_WIN32) #include "lldb/Host/windows/windows.h" #endif #include "llvm/Support/WindowsError.h" using namespace lldb; using namespace lldb_private; llvm::Expected<HostThread> ThreadLauncher::LaunchThread( llvm::StringRef name, lldb::thread_func_t thread_function, lldb::thread_arg_t thread_arg, size_t min_stack_byte_size) { // 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_INVALID_HOST_THREAD) return llvm::errorCodeToError(llvm::mapWindowsError(GetLastError())); #else // 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; } #endif pthread_attr_t *thread_attr_ptr = nullptr; 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); if (destroy_attr) ::pthread_attr_destroy(&thread_attr); if (err) return llvm::errorCodeToError( std::error_code(err, std::generic_category())); #endif return HostThread(thread); }
Upload File
Create Folder