1 //===---------- RPCChannel.h - LLVM out-of-process JIT execution ----------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // Definition of the RemoteTargetExternal class which executes JITed code in a 11 // separate process from where it was built. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_TOOLS_LLI_RPCCHANNEL_H 16 #define LLVM_TOOLS_LLI_RPCCHANNEL_H 17 18 #include <stdlib.h> 19 #include <string> 20 21 namespace llvm { 22 23 class RPCChannel { 24 public: 25 std::string ChildName; 26 RPCChannel()27 RPCChannel() {} 28 ~RPCChannel(); 29 30 /// Start the remote process. 31 /// 32 /// @returns True on success. On failure, ErrorMsg is updated with 33 /// descriptive text of the encountered error. 34 bool createServer(); 35 36 bool createClient(); 37 38 // This will get filled in as a point to an OS-specific structure. 39 void *ConnectionData; 40 41 bool WriteBytes(const void *Data, size_t Size); 42 bool ReadBytes(void *Data, size_t Size); 43 44 void Wait(); 45 }; 46 47 } // end namespace llvm 48 49 #endif 50