1 //===-- ThreadLauncher.h ----------------------------------------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef LLDB_HOST_THREADLAUNCHER_H
10 #define LLDB_HOST_THREADLAUNCHER_H
11 
12 #include "lldb/Host/HostThread.h"
13 #include "lldb/lldb-types.h"
14 
15 #include "llvm/ADT/StringRef.h"
16 #include "llvm/Support/Error.h"
17 
18 namespace lldb_private {
19 
20 class ThreadLauncher {
21 public:
22   static llvm::Expected<HostThread>
23   LaunchThread(llvm::StringRef name,
24                std::function<lldb::thread_result_t()> thread_function,
25                size_t min_stack_byte_size = 0); // Minimum stack size in bytes,
26                                                 // set stack size to zero for
27                                                 // default platform thread stack
28                                                 // size
29 
30   struct HostThreadCreateInfo {
31     std::string thread_name;
32     std::function<lldb::thread_result_t()> impl;
33 
34     HostThreadCreateInfo(std::string thread_name,
35                          std::function<lldb::thread_result_t()> impl)
36         : thread_name(std::move(thread_name)), impl(std::move(impl)) {}
37   };
38 };
39 }
40 
41 #endif
42