For PR351:
authorReid Spencer <rspencer@reidspencer.com>
Mon, 27 Dec 2004 06:17:27 +0000 (06:17 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Mon, 27 Dec 2004 06:17:27 +0000 (06:17 +0000)
* Move implementation of sys::PreventCoreFiles function to this file from
  the now defunct SysConfig abstraction.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@19159 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/System/Process.h
lib/System/Unix/Process.cpp
lib/System/Unix/Process.inc
lib/System/Win32/Process.cpp
lib/System/Win32/Process.inc

index 56028fb7bc4b3e90646b954f93a294fca6107d49..7733cf5f65689377bc4d229640ac328fed2923f9 100644 (file)
@@ -63,6 +63,12 @@ namespace sys {
           ///< Returns the current amount of system time for the process
       );
 
+      /// This function makes the necessary calls to the operating system to 
+      /// prevent core files or any other kind of large memory dumps that can 
+      /// occur when a program fails.
+      /// @brief Prevent core file generation.
+      static void PreventCoreFiles();
+
     /// @}
   };
 }
index 1c203ab50c5552964c9e56b53b9eb3ed95eefdc5..19533905175142256dbb268bea9edf970ea806c3 100644 (file)
@@ -109,6 +109,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time,
 #endif
 }
 
+// Some LLVM programs such as bugpoint produce core files as a normal part of
+// their operation. To prevent the disk from filling up, this function
+// does what's necessary to prevent their generation.
+void Process::PreventCoreFiles() {
+#if HAVE_SETRLIMIT
+  struct rlimit rlim;
+  rlim.rlim_cur = rlim.rlim_max = 0;
+  int res = setrlimit(RLIMIT_CORE, &rlim);
+  if (res != 0)
+    ThrowErrno("Can't prevent core file generation");
+#endif
+}
 
 }
 // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
index 1c203ab50c5552964c9e56b53b9eb3ed95eefdc5..19533905175142256dbb268bea9edf970ea806c3 100644 (file)
@@ -109,6 +109,18 @@ Process::GetTimeUsage(TimeValue& elapsed, TimeValue& user_time,
 #endif
 }
 
+// Some LLVM programs such as bugpoint produce core files as a normal part of
+// their operation. To prevent the disk from filling up, this function
+// does what's necessary to prevent their generation.
+void Process::PreventCoreFiles() {
+#if HAVE_SETRLIMIT
+  struct rlimit rlim;
+  rlim.rlim_cur = rlim.rlim_max = 0;
+  int res = setrlimit(RLIMIT_CORE, &rlim);
+  if (res != 0)
+    ThrowErrno("Can't prevent core file generation");
+#endif
+}
 
 }
 // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
index 00da74076b0c15de3571e79e45d13a6077a3a41b..10fec05cb3d2d951f8e4eb9050bf15c0fe6a00c8 100644 (file)
@@ -90,5 +90,14 @@ Process::GetTimeUsage(
   sys_time.nanoseconds( unsigned(KernelTime % 10000000) * 100 );
 }
 
+// Some LLVM programs such as bugpoint produce core files as a normal part of
+// their operation. To prevent the disk from filling up, this configuration item
+// does what's necessary to prevent their generation.
+void Process::PreventCoreFiles() {
+  // Windows doesn't do core files, so nothing to do.
+  // Although...  it might be nice to prevent the do-you-want-to-debug
+  // dialog box from coming up.  Or maybe not...
+}
+
 }
 // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab
index 00da74076b0c15de3571e79e45d13a6077a3a41b..10fec05cb3d2d951f8e4eb9050bf15c0fe6a00c8 100644 (file)
@@ -90,5 +90,14 @@ Process::GetTimeUsage(
   sys_time.nanoseconds( unsigned(KernelTime % 10000000) * 100 );
 }
 
+// Some LLVM programs such as bugpoint produce core files as a normal part of
+// their operation. To prevent the disk from filling up, this configuration item
+// does what's necessary to prevent their generation.
+void Process::PreventCoreFiles() {
+  // Windows doesn't do core files, so nothing to do.
+  // Although...  it might be nice to prevent the do-you-want-to-debug
+  // dialog box from coming up.  Or maybe not...
+}
+
 }
 // vim: sw=2 smartindent smarttab tw=80 autoindent expandtab