1 //===---- RemoteTargetMessage.h - LLI out-of-process message protocol -----===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 // Definition of the LLIMessageType enum which is used for communication with a
11 // child process for remote execution.
13 //===----------------------------------------------------------------------===//
15 #ifndef LLI_REMOTETARGETMESSAGE_H
16 #define LLI_REMOTETARGETMESSAGE_H
20 // LLI messages from parent-to-child or vice versa follow an exceedingly simple
21 // protocol where the first four bytes represent the message type, the next
22 // four bytes represent the size of data for the command and following bytes
23 // represent the actual data.
25 // The protocol is not intended to be robust, secure or fault-tolerant. It is
26 // only here for testing purposes and is therefore intended to be the simplest
27 // implementation that will work. It is assumed that the parent and child
28 // share characteristics like endianness.
32 LLI_ChildActive = 0, // Data = not used
33 LLI_AllocateSpace, // Data = struct { uint_32t Align, uint_32t Size }
34 LLI_AllocationResult, // Data = uint64_t AllocAddress (in Child memory space)
35 LLI_LoadCodeSection, // Data = uint32_t Addr, followed by section contests
36 LLI_LoadDataSection, // Data = uint32_t Addr, followed by section contents
37 LLI_LoadComplete, // Data = not used
38 LLI_Execute, // Data = Address of function to execute
39 LLI_ExecutionResult, // Data = uint64_t Result
40 LLI_Terminate // Data = not used
43 } // end namespace llvm