blob: d3477e115e2d85abd0b0e9c369e6e9812c2282c3 [file] [log] [blame]
//===-- HostThread.h --------------------------------------------*- C++ -*-===//
//
// 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
//
//===----------------------------------------------------------------------===//
#ifndef LLDB_HOST_HOSTTHREAD_H
#define LLDB_HOST_HOSTTHREAD_H
#include "lldb/Host/HostNativeThreadForward.h"
#include "lldb/Utility/Status.h"
#include "lldb/lldb-types.h"
#include <memory>
namespace lldb_private {
class HostNativeThreadBase;
/// \class HostInfo HostInfo.h "lldb/Host/HostThread.h"
/// A class that represents a thread running inside of a process on the
/// local machine.
///
/// HostThread allows querying and manipulation of threads running on the host
/// machine.
///
class HostThread {
public:
HostThread();
HostThread(lldb::thread_t thread);
Status Join(lldb::thread_result_t *result);
Status Cancel();
void Reset();
lldb::thread_t Release();
bool IsJoinable() const;
HostNativeThread &GetNativeThread();
const HostNativeThread &GetNativeThread() const;
lldb::thread_result_t GetResult() const;
bool EqualsThread(lldb::thread_t thread) const;
private:
std::shared_ptr<HostNativeThreadBase> m_native_thread;
};
}
#endif