diff options
Diffstat (limited to 'contrib/llvm/tools/lli/RemoteTargetMessage.h')
-rw-r--r-- | contrib/llvm/tools/lli/RemoteTargetMessage.h | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/contrib/llvm/tools/lli/RemoteTargetMessage.h b/contrib/llvm/tools/lli/RemoteTargetMessage.h deleted file mode 100644 index c210e4b..0000000 --- a/contrib/llvm/tools/lli/RemoteTargetMessage.h +++ /dev/null @@ -1,85 +0,0 @@ -//===---- RemoteTargetMessage.h - LLI out-of-process message protocol -----===// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// Definition of the LLIMessageType enum which is used for communication with a -// child process for remote execution. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_TOOLS_LLI_REMOTETARGETMESSAGE_H -#define LLVM_TOOLS_LLI_REMOTETARGETMESSAGE_H - -namespace llvm { - -// LLI messages from parent-to-child or vice versa follow an exceedingly simple -// protocol where the first four bytes represent the message type, the next -// four bytes represent the size of data for the command and following bytes -// represent the actual data. -// -// The protocol is not intended to be robust, secure or fault-tolerant. It is -// only here for testing purposes and is therefore intended to be the simplest -// implementation that will work. It is assumed that the parent and child -// share characteristics like endianness. -// -// Quick description of the protocol: -// -// { Header + Payload Size + Payload } -// -// The protocol message consist of a header, the payload size (which can be -// zero), and the payload itself. The payload can contain any number of items, -// and the size has to be the sum of them all. Each end is responsible for -// reading/writing the correct number of items with the correct sizes. -// -// The current four known exchanges are: -// -// * Allocate Space: -// Parent: { LLI_AllocateSpace, 8, Alignment, Size } -// Child: { LLI_AllocationResult, 8, Address } -// -// * Load Data: -// Parent: { LLI_LoadDataSection, 8+Size, Address, Data } -// Child: { LLI_LoadComplete, 4, StatusCode } -// -// * Load Code: -// Parent: { LLI_LoadCodeSection, 8+Size, Address, Code } -// Child: { LLI_LoadComplete, 4, StatusCode } -// -// * Execute Code: -// Parent: { LLI_Execute, 8, Address } -// Child: { LLI_ExecutionResult, 4, Result } -// -// It is the responsibility of either side to check for correct headers, -// sizes and payloads, since any inconsistency would misalign the pipe, and -// result in data corruption. - -enum LLIMessageType { - LLI_Error = -1, - LLI_ChildActive = 0, // Data = not used - LLI_AllocateSpace, // Data = struct { uint32_t Align, uint_32t Size } - LLI_AllocationResult, // Data = uint64_t Address (child memory space) - - LLI_LoadCodeSection, // Data = uint64_t Address, void * SectionData - LLI_LoadDataSection, // Data = uint64_t Address, void * SectionData - LLI_LoadResult, // Data = uint32_t LLIMessageStatus - - LLI_Execute, // Data = uint64_t Address - LLI_ExecutionResult, // Data = uint32_t Result - - LLI_Terminate // Data = not used -}; - -enum LLIMessageStatus { - LLI_Status_Success = 0, // Operation succeeded - LLI_Status_NotAllocated, // Address+Size not allocated in child space - LLI_Status_IncompleteMsg // Size received doesn't match request -}; - -} // end namespace llvm - -#endif |