Add a new function for the JIT
[oota-llvm.git] / include / Support / SystemUtils.h
index 01c8189723bf13054fece9e5a2f80506726029dc..79573fec67f434647bef6ba31c8c423fe10baaa0 100644 (file)
@@ -1,4 +1,11 @@
 //===- SystemUtils.h - Utilities to do low-level system stuff ---*- C++ -*-===//
+// 
+//                     The LLVM Compiler Infrastructure
+//
+// This file was developed by the LLVM research group and is distributed under
+// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// 
+//===----------------------------------------------------------------------===//
 //
 // This file contains functions used to do a variety of low-level, often
 // system-specific, tasks.
 
 #include <string>
 
+namespace llvm {
+
 /// isExecutableFile - This function returns true if the filename specified
 /// exists and is executable.
 ///
 bool isExecutableFile(const std::string &ExeFileName);
 
+/// isStandardOutAConsole - Return true if we can tell that the standard output
+/// stream goes to a terminal window or console.
+bool isStandardOutAConsole();
+
 /// FindExecutable - Find a named executable, giving the argv[0] of program
 /// being executed. This allows us to find another LLVM tool if it is built into
 /// the same directory, but that directory is neither the current directory, nor
@@ -38,4 +51,14 @@ int RunProgramWithTimeout(const std::string &ProgramPath, const char **Args,
 /// wait for it to terminate.
 ///
 int ExecWait (const char * const argv[], const char * const envp[]);
+
+/// AllocateRWXMemory - Allocate a slab of memory with read/write/execute
+/// permissions.  This is typically used for JIT applications where we want
+/// to emit code to the memory then jump to it.  Getting this type of memory
+/// is very OS specific.
+///
+void *AllocateRWXMemory(unsigned NumBytes);
+
+} // End llvm namespace
+
 #endif