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 18namespace lldb_private { 19 20class ThreadLauncher { 21public: 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