1257752Semaste//===-- PlatformPOSIX.h -----------------------------------------*- C++ -*-===// 2257752Semaste// 3257752Semaste// The LLVM Compiler Infrastructure 4257752Semaste// 5257752Semaste// This file is distributed under the University of Illinois Open Source 6257752Semaste// License. See LICENSE.TXT for details. 7257752Semaste// 8257752Semaste//===----------------------------------------------------------------------===// 9257752Semaste 10257752Semaste#ifndef liblldb_PlatformPOSIX_h_ 11257752Semaste#define liblldb_PlatformPOSIX_h_ 12257752Semaste 13257752Semaste// C Includes 14257752Semaste// C++ Includes 15257752Semaste 16257752Semaste#include <memory> 17257752Semaste 18257752Semaste// Other libraries and framework includes 19257752Semaste// Project includes 20257752Semaste#include "lldb/Interpreter/Options.h" 21257752Semaste#include "lldb/Target/Platform.h" 22257752Semaste 23257752Semasteclass PlatformPOSIX : public lldb_private::Platform 24257752Semaste{ 25257752Semastepublic: 26257752Semaste PlatformPOSIX (bool is_host); 27257752Semaste 28257752Semaste virtual 29257752Semaste ~PlatformPOSIX(); 30257752Semaste 31257752Semaste //------------------------------------------------------------ 32257752Semaste // lldb_private::Platform functions 33257752Semaste //------------------------------------------------------------ 34257752Semaste virtual lldb_private::OptionGroupOptions* 35257752Semaste GetConnectionOptions (lldb_private::CommandInterpreter& interpreter); 36257752Semaste 37257752Semaste virtual lldb_private::Error 38257752Semaste PutFile (const lldb_private::FileSpec& source, 39257752Semaste const lldb_private::FileSpec& destination, 40257752Semaste uint32_t uid = UINT32_MAX, 41257752Semaste uint32_t gid = UINT32_MAX); 42257752Semaste 43257752Semaste virtual lldb::user_id_t 44257752Semaste OpenFile (const lldb_private::FileSpec& file_spec, 45257752Semaste uint32_t flags, 46263367Semaste uint32_t mode, 47257752Semaste lldb_private::Error &error); 48257752Semaste 49257752Semaste virtual bool 50257752Semaste CloseFile (lldb::user_id_t fd, 51257752Semaste lldb_private::Error &error); 52257752Semaste 53257752Semaste virtual uint64_t 54257752Semaste ReadFile (lldb::user_id_t fd, 55257752Semaste uint64_t offset, 56257752Semaste void *dst, 57257752Semaste uint64_t dst_len, 58257752Semaste lldb_private::Error &error); 59257752Semaste 60257752Semaste virtual uint64_t 61257752Semaste WriteFile (lldb::user_id_t fd, 62257752Semaste uint64_t offset, 63257752Semaste const void* src, 64257752Semaste uint64_t src_len, 65257752Semaste lldb_private::Error &error); 66257752Semaste 67257752Semaste virtual lldb::user_id_t 68257752Semaste GetFileSize (const lldb_private::FileSpec& file_spec); 69257752Semaste 70257752Semaste virtual lldb_private::Error 71263367Semaste CreateSymlink(const char *src, const char *dst); 72263367Semaste 73263367Semaste virtual lldb_private::Error 74257752Semaste GetFile (const lldb_private::FileSpec& source, 75257752Semaste const lldb_private::FileSpec& destination); 76257752Semaste 77263367Semaste virtual lldb_private::ConstString 78263367Semaste GetRemoteWorkingDirectory(); 79263367Semaste 80263367Semaste virtual bool 81263367Semaste SetRemoteWorkingDirectory(const lldb_private::ConstString &path); 82263367Semaste 83257752Semaste virtual lldb_private::Error 84257752Semaste RunShellCommand (const char *command, // Shouldn't be NULL 85257752Semaste const char *working_dir, // Pass NULL to use the current working directory 86257752Semaste int *status_ptr, // Pass NULL if you don't want the process exit status 87257752Semaste int *signo_ptr, // Pass NULL if you don't want the signal that caused the process to exit 88257752Semaste std::string *command_output, // Pass NULL if you don't want the command output 89257752Semaste uint32_t timeout_sec); // Timeout in seconds to wait for shell program to finish 90257752Semaste 91263367Semaste virtual lldb_private::Error 92263367Semaste MakeDirectory (const char *path, uint32_t mode); 93257752Semaste 94263367Semaste virtual lldb_private::Error 95263367Semaste GetFilePermissions (const char *path, uint32_t &file_permissions); 96263367Semaste 97263367Semaste virtual lldb_private::Error 98263367Semaste SetFilePermissions (const char *path, uint32_t file_permissions); 99263367Semaste 100257752Semaste virtual bool 101257752Semaste GetFileExists (const lldb_private::FileSpec& file_spec); 102257752Semaste 103263367Semaste virtual lldb_private::Error 104263367Semaste Unlink (const char *path); 105257752Semaste 106257752Semaste virtual std::string 107257752Semaste GetPlatformSpecificConnectionInformation(); 108257752Semaste 109257752Semaste virtual bool 110257752Semaste CalculateMD5 (const lldb_private::FileSpec& file_spec, 111257752Semaste uint64_t &low, 112257752Semaste uint64_t &high); 113257752Semaste 114269024Semaste virtual void 115269024Semaste CalculateTrapHandlerSymbolNames (); 116269024Semaste 117257752Semasteprotected: 118269024Semaste std::unique_ptr<lldb_private::OptionGroupOptions> m_options; 119257752Semaste 120257752Semaste lldb::PlatformSP m_remote_platform_sp; // Allow multiple ways to connect to a remote POSIX-compliant OS 121257752Semaste 122257752Semasteprivate: 123257752Semaste DISALLOW_COPY_AND_ASSIGN (PlatformPOSIX); 124257752Semaste 125257752Semaste}; 126257752Semaste 127257752Semaste#endif // liblldb_PlatformPOSIX_h_ 128