mirror of
https://github.com/RPCS3/llvm.git
synced 2024-12-24 13:06:56 +00:00
0ab5c6c16b
At this time only Unix-based systems are supported. Windows has stubs and should re-route to the simulated mode. Thanks to Sriram Murali for contributions to this patch. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@191843 91177308-0d34-0410-b5e6-96231b3b80d8
46 lines
1.8 KiB
C++
46 lines
1.8 KiB
C++
//===---- 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 LLI_REMOTETARGETMESSAGE_H
|
|
#define 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.
|
|
|
|
enum LLIMessageType {
|
|
LLI_Error = -1,
|
|
LLI_ChildActive = 0, // Data = not used
|
|
LLI_AllocateSpace, // Data = struct { uint_32t Align, uint_32t Size }
|
|
LLI_AllocationResult, // Data = uint64_t AllocAddress (in Child memory space)
|
|
LLI_LoadCodeSection, // Data = uint32_t Addr, followed by section contests
|
|
LLI_LoadDataSection, // Data = uint32_t Addr, followed by section contents
|
|
LLI_LoadComplete, // Data = not used
|
|
LLI_Execute, // Data = Address of function to execute
|
|
LLI_ExecutionResult, // Data = uint64_t Result
|
|
LLI_Terminate // Data = not used
|
|
};
|
|
|
|
} // end namespace llvm
|
|
|
|
#endif
|