blob: 98291f18247dc707f397f66c44b6707ba8e76e95 [file] [log] [blame]
//===-- SBPlatform.h --------------------------------------------*- C++ -*-===//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
#include "lldb/API/SBDefines.h"
#include <functional>
struct PlatformConnectOptions;
struct PlatformShellCommand;
namespace lldb {
class SBLaunchInfo;
class LLDB_API SBPlatformConnectOptions {
SBPlatformConnectOptions(const char *url);
SBPlatformConnectOptions(const SBPlatformConnectOptions &rhs);
SBPlatformConnectOptions &operator=(const SBPlatformConnectOptions &rhs);
const char *GetURL();
void SetURL(const char *url);
bool GetRsyncEnabled();
void EnableRsync(const char *options, const char *remote_path_prefix,
bool omit_remote_hostname);
void DisableRsync();
const char *GetLocalCacheDirectory();
void SetLocalCacheDirectory(const char *path);
PlatformConnectOptions *m_opaque_ptr;
class LLDB_API SBPlatformShellCommand {
SBPlatformShellCommand(const char *shell, const char *shell_command);
SBPlatformShellCommand(const char *shell_command);
SBPlatformShellCommand(const SBPlatformShellCommand &rhs);
SBPlatformShellCommand &operator=(const SBPlatformShellCommand &rhs);
void Clear();
const char *GetShell();
void SetShell(const char *shell);
const char *GetCommand();
void SetCommand(const char *shell_command);
const char *GetWorkingDirectory();
void SetWorkingDirectory(const char *path);
uint32_t GetTimeoutSeconds();
void SetTimeoutSeconds(uint32_t sec);
int GetSignal();
int GetStatus();
const char *GetOutput();
friend class SBPlatform;
PlatformShellCommand *m_opaque_ptr;
class LLDB_API SBPlatform {
SBPlatform(const char *platform_name);
SBPlatform(const SBPlatform &rhs);
SBPlatform &operator=(const SBPlatform &rhs);
static SBPlatform GetHostPlatform();
explicit operator bool() const;
bool IsValid() const;
void Clear();
const char *GetWorkingDirectory();
bool SetWorkingDirectory(const char *path);
const char *GetName();
SBError ConnectRemote(SBPlatformConnectOptions &connect_options);
void DisconnectRemote();
bool IsConnected();
// The following functions will work if the platform is connected
const char *GetTriple();
const char *GetHostname();
const char *GetOSBuild();
const char *GetOSDescription();
uint32_t GetOSMajorVersion();
uint32_t GetOSMinorVersion();
uint32_t GetOSUpdateVersion();
SBError Put(SBFileSpec &src, SBFileSpec &dst);
SBError Get(SBFileSpec &src, SBFileSpec &dst);
SBError Install(SBFileSpec &src, SBFileSpec &dst);
SBError Run(SBPlatformShellCommand &shell_command);
SBError Launch(SBLaunchInfo &launch_info);
SBError Kill(const lldb::pid_t pid);
MakeDirectory(const char *path,
uint32_t file_permissions = eFilePermissionsDirectoryDefault);
uint32_t GetFilePermissions(const char *path);
SBError SetFilePermissions(const char *path, uint32_t file_permissions);
SBUnixSignals GetUnixSignals() const;
/// Return the environment variables of the remote platform connection
/// process.
/// \return
/// An lldb::SBEnvironment object which is a copy of the platform's
/// environment.
SBEnvironment GetEnvironment();
friend class SBDebugger;
friend class SBTarget;
lldb::PlatformSP GetSP() const;
void SetSP(const lldb::PlatformSP &platform_sp);
SBError ExecuteConnected(
const std::function<lldb_private::Status(const lldb::PlatformSP &)>
lldb::PlatformSP m_opaque_sp;
} // namespace lldb