130fdc8d8SChris Lattner //===-- SBHostOS.cpp --------------------------------------------*- C++ -*-===//
230fdc8d8SChris Lattner //
330fdc8d8SChris Lattner //                     The LLVM Compiler Infrastructure
430fdc8d8SChris Lattner //
530fdc8d8SChris Lattner // This file is distributed under the University of Illinois Open Source
630fdc8d8SChris Lattner // License. See LICENSE.TXT for details.
730fdc8d8SChris Lattner //
830fdc8d8SChris Lattner //===----------------------------------------------------------------------===//
930fdc8d8SChris Lattner 
1030fdc8d8SChris Lattner #include "lldb/API/SBHostOS.h"
1130fdc8d8SChris Lattner #include "lldb/API/SBError.h"
1253239f00SGreg Clayton #include "lldb/Host/FileSpec.h"
13ceb6b139SCaroline Tice #include "lldb/Core/Log.h"
1430fdc8d8SChris Lattner #include "lldb/Host/Host.h"
1530fdc8d8SChris Lattner 
1630fdc8d8SChris Lattner using namespace lldb;
1730fdc8d8SChris Lattner using namespace lldb_private;
1830fdc8d8SChris Lattner 
1930fdc8d8SChris Lattner 
2030fdc8d8SChris Lattner 
2130fdc8d8SChris Lattner SBFileSpec
2230fdc8d8SChris Lattner SBHostOS::GetProgramFileSpec ()
2330fdc8d8SChris Lattner {
2430fdc8d8SChris Lattner     SBFileSpec sb_filespec;
2530fdc8d8SChris Lattner     sb_filespec.SetFileSpec (Host::GetProgramFileSpec ());
2630fdc8d8SChris Lattner     return sb_filespec;
2730fdc8d8SChris Lattner }
2830fdc8d8SChris Lattner 
29e2231ac7SJim Ingham SBFileSpec
30e2231ac7SJim Ingham SBHostOS::GetLLDBPythonPath ()
31e2231ac7SJim Ingham {
32e2231ac7SJim Ingham     SBFileSpec sb_lldb_python_filespec;
33e2231ac7SJim Ingham     FileSpec lldb_python_spec;
34e2231ac7SJim Ingham     if (Host::GetLLDBPath (ePathTypePythonDir, lldb_python_spec))
35e2231ac7SJim Ingham     {
36e2231ac7SJim Ingham         sb_lldb_python_filespec.SetFileSpec (lldb_python_spec);
37e2231ac7SJim Ingham     }
38e2231ac7SJim Ingham     return sb_lldb_python_filespec;
39e2231ac7SJim Ingham }
40e2231ac7SJim Ingham 
4130fdc8d8SChris Lattner lldb::thread_t
4230fdc8d8SChris Lattner SBHostOS::ThreadCreate
4330fdc8d8SChris Lattner (
4430fdc8d8SChris Lattner     const char *name,
4599fbc076SDeepak Panickal     lldb::thread_func_t thread_function,
4630fdc8d8SChris Lattner     void *thread_arg,
4730fdc8d8SChris Lattner     SBError *error_ptr
4830fdc8d8SChris Lattner )
4930fdc8d8SChris Lattner {
505160ce5cSGreg Clayton     Log *log(lldb_private::GetLogIfAllCategoriesSet (LIBLLDB_LOG_API));
51ceb6b139SCaroline Tice 
52ceb6b139SCaroline Tice     if (log)
53324a1036SSaleem Abdulrasool         log->Printf ("SBHostOS::ThreadCreate (name=\"%s\", thread_function=%p, thread_arg=%p, error_ptr=%p)",
54*702c1d09SDavid Majnemer                      name, reinterpret_cast<void*>(reinterpret_cast<intptr_t>(thread_function)),
55324a1036SSaleem Abdulrasool                      static_cast<void*>(thread_arg),
56324a1036SSaleem Abdulrasool                      static_cast<void*>(error_ptr));
57ceb6b139SCaroline Tice 
58c1338e8dSCaroline Tice     // FIXME: You should log the return value?
59ceb6b139SCaroline Tice 
6030fdc8d8SChris Lattner     return Host::ThreadCreate (name, thread_function, thread_arg, error_ptr ? error_ptr->get() : NULL);
6130fdc8d8SChris Lattner }
6230fdc8d8SChris Lattner 
6330fdc8d8SChris Lattner void
6430fdc8d8SChris Lattner SBHostOS::ThreadCreated (const char *name)
6530fdc8d8SChris Lattner {
6630fdc8d8SChris Lattner     Host::ThreadCreated (name);
6730fdc8d8SChris Lattner }
6830fdc8d8SChris Lattner 
6930fdc8d8SChris Lattner bool
7030fdc8d8SChris Lattner SBHostOS::ThreadCancel (lldb::thread_t thread, SBError *error_ptr)
7130fdc8d8SChris Lattner {
7230fdc8d8SChris Lattner     return Host::ThreadCancel (thread, error_ptr ? error_ptr->get() : NULL);
7330fdc8d8SChris Lattner }
7430fdc8d8SChris Lattner 
7530fdc8d8SChris Lattner bool
7630fdc8d8SChris Lattner SBHostOS::ThreadDetach (lldb::thread_t thread, SBError *error_ptr)
7730fdc8d8SChris Lattner {
7830fdc8d8SChris Lattner     return Host::ThreadDetach (thread, error_ptr ? error_ptr->get() : NULL);
7930fdc8d8SChris Lattner }
8030fdc8d8SChris Lattner 
8130fdc8d8SChris Lattner bool
8299fbc076SDeepak Panickal SBHostOS::ThreadJoin (lldb::thread_t thread, lldb::thread_result_t *result, SBError *error_ptr)
8330fdc8d8SChris Lattner {
8430fdc8d8SChris Lattner     return Host::ThreadJoin (thread, result, error_ptr ? error_ptr->get() : NULL);
8530fdc8d8SChris Lattner }
8630fdc8d8SChris Lattner 
8730fdc8d8SChris Lattner 
88