LLDB  mainline
HostThreadPosix.cpp
Go to the documentation of this file.
1 //===-- HostThreadPosix.cpp -------------------------------------*- 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 
10 #include "lldb/Utility/Status.h"
11 
12 #include <errno.h>
13 #include <pthread.h>
14 
15 using namespace lldb;
16 using namespace lldb_private;
17 
18 HostThreadPosix::HostThreadPosix() {}
19 
20 HostThreadPosix::HostThreadPosix(lldb::thread_t thread)
21  : HostNativeThreadBase(thread) {}
22 
24 
26  Status error;
27  if (IsJoinable()) {
28  int err = ::pthread_join(m_thread, result);
29  error.SetError(err, lldb::eErrorTypePOSIX);
30  } else {
31  if (result)
32  *result = NULL;
33  error.SetError(EINVAL, eErrorTypePOSIX);
34  }
35 
36  Reset();
37  return error;
38 }
39 
41  Status error;
42  if (IsJoinable()) {
43 #ifndef __FreeBSD__
44  llvm_unreachable("someone is calling HostThread::Cancel()");
45 #else
46  int err = ::pthread_cancel(m_thread);
47  error.SetError(err, eErrorTypePOSIX);
48 #endif
49  }
50  return error;
51 }
52 
54  Status error;
55  if (IsJoinable()) {
56  int err = ::pthread_detach(m_thread);
57  error.SetError(err, eErrorTypePOSIX);
58  }
59  Reset();
60  return error;
61 }
Enumerations for broadcasting.
Definition: SBLaunchInfo.h:14
POSIX error codes.
Status Join(lldb::thread_result_t *result) override
pthread_t thread_t
Definition: lldb-types.h:58
int void SetError(ValueType err, lldb::ErrorType type)
Set accesssor with an error value and type.
Definition: Status.cpp:216
Definition: SBAddress.h:15
An error handling class.
Definition: Status.h:44
void * thread_result_t
Definition: lldb-types.h:62