xref: /freebsd-src/contrib/llvm-project/lldb/include/lldb/Host/ThreadLauncher.h (revision 81ad626541db97eb356e2c1d4a20eb2a26a766ab)
10b57cec5SDimitry Andric //===-- ThreadLauncher.h ----------------------------------------*- C++ -*-===//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric 
95ffd83dbSDimitry Andric #ifndef LLDB_HOST_THREADLAUNCHER_H
105ffd83dbSDimitry Andric #define LLDB_HOST_THREADLAUNCHER_H
110b57cec5SDimitry Andric 
120b57cec5SDimitry Andric #include "lldb/Host/HostThread.h"
130b57cec5SDimitry Andric #include "lldb/lldb-types.h"
140b57cec5SDimitry Andric 
150b57cec5SDimitry Andric #include "llvm/ADT/StringRef.h"
160b57cec5SDimitry Andric #include "llvm/Support/Error.h"
170b57cec5SDimitry Andric 
180b57cec5SDimitry Andric namespace lldb_private {
190b57cec5SDimitry Andric 
200b57cec5SDimitry Andric class ThreadLauncher {
210b57cec5SDimitry Andric public:
220b57cec5SDimitry Andric   static llvm::Expected<HostThread>
23*81ad6265SDimitry Andric   LaunchThread(llvm::StringRef name,
24*81ad6265SDimitry Andric                std::function<lldb::thread_result_t()> thread_function,
250b57cec5SDimitry Andric                size_t min_stack_byte_size = 0); // Minimum stack size in bytes,
260b57cec5SDimitry Andric                                                 // set stack size to zero for
270b57cec5SDimitry Andric                                                 // default platform thread stack
280b57cec5SDimitry Andric                                                 // size
290b57cec5SDimitry Andric 
300b57cec5SDimitry Andric   struct HostThreadCreateInfo {
310b57cec5SDimitry Andric     std::string thread_name;
32*81ad6265SDimitry Andric     std::function<lldb::thread_result_t()> impl;
330b57cec5SDimitry Andric 
HostThreadCreateInfoHostThreadCreateInfo34*81ad6265SDimitry Andric     HostThreadCreateInfo(std::string thread_name,
35*81ad6265SDimitry Andric                          std::function<lldb::thread_result_t()> impl)
36*81ad6265SDimitry Andric         : thread_name(std::move(thread_name)), impl(std::move(impl)) {}
370b57cec5SDimitry Andric   };
380b57cec5SDimitry Andric };
390b57cec5SDimitry Andric }
400b57cec5SDimitry Andric 
410b57cec5SDimitry Andric #endif
42