class SimpleRemoteEPCServer

Declaration

class SimpleRemoteEPCServer : public SimpleRemoteEPCTransportClient { /* full declaration omitted */ };

Description

A simple EPC server implementation.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:36

Inherits from: SimpleRemoteEPCTransportClient

Member Variables

private std::mutex ServerStateMutex
private std::condition_variable ShutdownCV
private enum(unnamed enum at / home / hdoc / tmp / llvm - project / llvm / include / llvm / ExecutionEngine / Orc / TargetProcess / SimpleRemoteEPCServer.h : 167 : 3) RunState
private llvm::Error ShutdownErr = Error::success()
private std::unique_ptr<SimpleRemoteEPCTransport> T
private std::unique_ptr<Dispatcher> D
private std::vector< std::unique_ptr<ExecutorBootstrapService>> Services
private llvm::orc::SimpleRemoteEPCServer:: ReportErrorFunction ReportError
private uint64_t NextSeqNo = 0
private llvm::orc::SimpleRemoteEPCServer:: PendingJITDispatchResultsMap PendingJITDispatchResults
private std::vector<sys::DynamicLibrary> Dylibs

Method Overview

  • public template <typename TransportT, typename... TransportTCtorArgTs>static Expected<std::unique_ptr<SimpleRemoteEPCServer>> Create(unique_function<llvm::Error (llvm::orc::SimpleRemoteEPCServer::Setup &)> SetupFunction, TransportTCtorArgTs &&... TransportTCtorArgs)
  • public static StringMap<llvm::orc::ExecutorAddr> defaultBootstrapSymbols()
  • private shared::WrapperFunctionResult doJITDispatch(const void * FnTag, const char * ArgData, size_t ArgSize)
  • private uint64_t getNextSeqNo()
  • private void handleCallWrapper(uint64_t RemoteSeqNo, llvm::orc::ExecutorAddr TagAddr, llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes)
  • public void handleDisconnect(llvm::Error Err)
  • public Expected<llvm::orc::SimpleRemoteEPCTransportClient::HandleMessageAction> handleMessage(llvm::orc::SimpleRemoteEPCOpcode OpC, uint64_t SeqNo, llvm::orc::ExecutorAddr TagAddr, llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes)
  • private llvm::Error handleResult(uint64_t SeqNo, llvm::orc::ExecutorAddr TagAddr, llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes)
  • private static shared::CWrapperFunctionResult jitDispatchEntry(void * DispatchCtx, const void * FnTag, const char * ArgData, size_t ArgSize)
  • private void releaseSeqNo(uint64_t)
  • private llvm::Error sendMessage(llvm::orc::SimpleRemoteEPCOpcode OpC, uint64_t SeqNo, llvm::orc::ExecutorAddr TagAddr, ArrayRef<char> ArgBytes)
  • private llvm::Error sendSetupMessage(StringMap<llvm::orc::ExecutorAddr> BootstrapSymbols)
  • public void setErrorReporter(llvm::orc::SimpleRemoteEPCServer::ReportErrorFunction ReportError)
  • public llvm::Error waitForDisconnect()

Inherited from SimpleRemoteEPCTransportClient:

Methods

template <typename TransportT,
          typename... TransportTCtorArgTs>
static Expected<
    std::unique_ptr<SimpleRemoteEPCServer>>
Create(
    unique_function<llvm::Error(
        llvm::orc::SimpleRemoteEPCServer::Setup&)>
        SetupFunction,
    TransportTCtorArgTs&&... TransportTCtorArgs)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:87

Templates

TransportT
TransportTCtorArgTs

Parameters

unique_function<llvm::Error( llvm::orc::SimpleRemoteEPCServer::Setup&)> SetupFunction
TransportTCtorArgTs&&... TransportTCtorArgs

static StringMap<llvm::orc::ExecutorAddr>
defaultBootstrapSymbols()

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:83

shared::WrapperFunctionResult doJITDispatch(
    const void* FnTag,
    const char* ArgData,
    size_t ArgSize)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:152

Parameters

const void* FnTag
const char* ArgData
size_t ArgSize

uint64_t getNextSeqNo()

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:159

void handleCallWrapper(
    uint64_t RemoteSeqNo,
    llvm::orc::ExecutorAddr TagAddr,
    llvm::orc::SimpleRemoteEPCArgBytesVector
        ArgBytes)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:148

Parameters

uint64_t RemoteSeqNo
llvm::orc::ExecutorAddr TagAddr
llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes

void handleDisconnect(llvm::Error Err)

Description

Handle a disconnection from the underlying transport. No further messages should be sent to handleMessage after this is called. Err may contain an Error value indicating unexpected disconnection. This allows clients to log such errors, but no attempt should be made at recovery (which should be handled inside the transport class, if it is supported at all).

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:138

Parameters

llvm::Error Err

Expected<
    llvm::orc::SimpleRemoteEPCTransportClient::
        HandleMessageAction>
handleMessage(
    llvm::orc::SimpleRemoteEPCOpcode OpC,
    uint64_t SeqNo,
    llvm::orc::ExecutorAddr TagAddr,
    llvm::orc::SimpleRemoteEPCArgBytesVector
        ArgBytes)

Description

Call to handle an incoming message. Returns 'Disconnect' if the message is a 'detach' message from the remote otherwise returns 'Continue'. If the server has moved to an error state, returns an error, which should be reported and treated as a 'Disconnect'.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:133

Parameters

llvm::orc::SimpleRemoteEPCOpcode OpC
uint64_t SeqNo
llvm::orc::ExecutorAddr TagAddr
llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes

llvm::Error handleResult(
    uint64_t SeqNo,
    llvm::orc::ExecutorAddr TagAddr,
    llvm::orc::SimpleRemoteEPCArgBytesVector
        ArgBytes)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:146

Parameters

uint64_t SeqNo
llvm::orc::ExecutorAddr TagAddr
llvm::orc::SimpleRemoteEPCArgBytesVector ArgBytes

static shared::CWrapperFunctionResult
jitDispatchEntry(void* DispatchCtx,
                 const void* FnTag,
                 const char* ArgData,
                 size_t ArgSize)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:154

Parameters

void* DispatchCtx
const void* FnTag
const char* ArgData
size_t ArgSize

void releaseSeqNo(uint64_t)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:160

Parameters

uint64_t

llvm::Error sendMessage(
    llvm::orc::SimpleRemoteEPCOpcode OpC,
    uint64_t SeqNo,
    llvm::orc::ExecutorAddr TagAddr,
    ArrayRef<char> ArgBytes)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:141

Parameters

llvm::orc::SimpleRemoteEPCOpcode OpC
uint64_t SeqNo
llvm::orc::ExecutorAddr TagAddr
ArrayRef<char> ArgBytes

llvm::Error sendSetupMessage(
    StringMap<llvm::orc::ExecutorAddr>
        BootstrapSymbols)

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:144

Parameters

StringMap<llvm::orc::ExecutorAddr> BootstrapSymbols

void setErrorReporter(
    llvm::orc::SimpleRemoteEPCServer::
        ReportErrorFunction ReportError)

Description

Set an error reporter for this server.

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:123

Parameters

llvm::orc::SimpleRemoteEPCServer:: ReportErrorFunction ReportError

llvm::Error waitForDisconnect()

Declared at: llvm/include/llvm/ExecutionEngine/Orc/TargetProcess/SimpleRemoteEPCServer.h:136