mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	Add header guards to files that were missing guards. Remove #endif comments as they don't seem common in LLVM (we can easily add them back if we decide they're useful) Changes made by clang-tidy with minor tweaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215558 91177308-0d34-0410-b5e6-96231b3b80d8
		
			
				
	
	
		
			86 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			3.1 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 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
 |