Convert 'struct' to 'class' in various places to adhere to the coding standards
[oota-llvm.git] / include / llvm / Support / SystemUtils.h
index c874d9932c05c45070c3425d82fd2308c5feee6a..aea7df80eba94f10972fdabc74f8fed3c8a6d04e 100644 (file)
@@ -12,8 +12,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef SYSTEMUTILS_H
-#define SYSTEMUTILS_H
+#ifndef LLVM_SUPPORT_SYSTEMUTILS_H
+#define LLVM_SUPPORT_SYSTEMUTILS_H
 
 #include <string>
 
@@ -24,6 +24,10 @@ namespace llvm {
 ///
 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
@@ -34,20 +38,28 @@ std::string FindExecutable(const std::string &ExeName,
 
 /// RunProgramWithTimeout - This function executes the specified program, with
 /// the specified null-terminated argument array, with the stdin/out/err fd's
-/// redirected, with a timeout specified on the commandline.  This terminates
+/// redirected, with a timeout specified by the last argument.  This terminates
 /// the calling program if there is an error executing the specified program.
 /// It returns the return value of the program, or -1 if a timeout is detected.
 ///
 int RunProgramWithTimeout(const std::string &ProgramPath, const char **Args,
                           const std::string &StdInFile = "",
                           const std::string &StdOutFile = "",
-                          const std::string &StdErrFile = "");
+                          const std::string &StdErrFile = "",
+                          unsigned NumSeconds = 0);
 
 /// ExecWait - Execute a program with the given arguments and environment and 
 /// 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