1//===-- SBHostOS.cpp ------------------------------------------------------===//
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#include "lldb/API/SBHostOS.h"
10#include "lldb/API/SBError.h"
11#include "lldb/Host/Config.h"
12#include "lldb/Host/FileSystem.h"
13#include "lldb/Host/Host.h"
14#include "lldb/Host/HostInfo.h"
15#include "lldb/Host/HostNativeThread.h"
16#include "lldb/Host/HostThread.h"
17#include "lldb/Host/ThreadLauncher.h"
18#include "lldb/Utility/FileSpec.h"
19#include "lldb/Utility/Instrumentation.h"
20
21#include "Plugins/ExpressionParser/Clang/ClangHost.h"
22#if LLDB_ENABLE_PYTHON
23#include "Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.h"
24#endif
25
26#include "llvm/ADT/SmallString.h"
27#include "llvm/Support/Path.h"
28
29using namespace lldb;
30using namespace lldb_private;
31
32SBFileSpec SBHostOS::GetProgramFileSpec() {
33 LLDB_INSTRUMENT();
34
35 SBFileSpec sb_filespec;
36 sb_filespec.SetFileSpec(HostInfo::GetProgramFileSpec());
37 return sb_filespec;
38}
39
40SBFileSpec SBHostOS::GetLLDBPythonPath() {
41 LLDB_INSTRUMENT();
42
43 return GetLLDBPath(path_type: ePathTypePythonDir);
44}
45
46SBFileSpec SBHostOS::GetLLDBPath(lldb::PathType path_type) {
47 LLDB_INSTRUMENT_VA(path_type);
48
49 FileSpec fspec;
50 switch (path_type) {
51 case ePathTypeLLDBShlibDir:
52 fspec = HostInfo::GetShlibDir();
53 break;
54 case ePathTypeSupportExecutableDir:
55 fspec = HostInfo::GetSupportExeDir();
56 break;
57 case ePathTypeHeaderDir:
58 fspec = HostInfo::GetHeaderDir();
59 break;
60 case ePathTypePythonDir:
61#if LLDB_ENABLE_PYTHON
62 fspec = ScriptInterpreterPython::GetPythonDir();
63#endif
64 break;
65 case ePathTypeLLDBSystemPlugins:
66 fspec = HostInfo::GetSystemPluginDir();
67 break;
68 case ePathTypeLLDBUserPlugins:
69 fspec = HostInfo::GetUserPluginDir();
70 break;
71 case ePathTypeLLDBTempSystemDir:
72 fspec = HostInfo::GetProcessTempDir();
73 break;
74 case ePathTypeGlobalLLDBTempSystemDir:
75 fspec = HostInfo::GetGlobalTempDir();
76 break;
77 case ePathTypeClangDir:
78 fspec = GetClangResourceDir();
79 break;
80 }
81
82 SBFileSpec sb_fspec;
83 sb_fspec.SetFileSpec(fspec);
84 return sb_fspec;
85}
86
87SBFileSpec SBHostOS::GetUserHomeDirectory() {
88 LLDB_INSTRUMENT();
89
90 FileSpec homedir;
91 FileSystem::Instance().GetHomeDirectory(file_spec&: homedir);
92 FileSystem::Instance().Resolve(file_spec&: homedir);
93
94 SBFileSpec sb_fspec;
95 sb_fspec.SetFileSpec(homedir);
96
97 return sb_fspec;
98}
99
100lldb::thread_t SBHostOS::ThreadCreate(const char *name,
101 lldb::thread_func_t thread_function,
102 void *thread_arg, SBError *error_ptr) {
103 LLDB_INSTRUMENT_VA(name, thread_function, thread_arg, error_ptr);
104 return LLDB_INVALID_HOST_THREAD;
105}
106
107void SBHostOS::ThreadCreated(const char *name) { LLDB_INSTRUMENT_VA(name); }
108
109bool SBHostOS::ThreadCancel(lldb::thread_t thread, SBError *error_ptr) {
110 LLDB_INSTRUMENT_VA(thread, error_ptr);
111 return false;
112}
113
114bool SBHostOS::ThreadDetach(lldb::thread_t thread, SBError *error_ptr) {
115 LLDB_INSTRUMENT_VA(thread, error_ptr);
116 return false;
117}
118
119bool SBHostOS::ThreadJoin(lldb::thread_t thread, lldb::thread_result_t *result,
120 SBError *error_ptr) {
121 LLDB_INSTRUMENT_VA(thread, result, error_ptr);
122 return false;
123}
124

source code of lldb/source/API/SBHostOS.cpp