summaryrefslogtreecommitdiff
path: root/lib/Support/Unix
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2013-03-26 01:27:52 +0000
committerNick Lewycky <nicholas@mxc.ca>2013-03-26 01:27:52 +0000
commitd5e1be03eda2e8036f136fdf12a5f5d9e1e684d8 (patch)
tree15d39954fc3335a5db0e76df41dd884402acba88 /lib/Support/Unix
parentbd3148b2857139e8737945f5df1a1ea1f4aff3b9 (diff)
downloadllvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.tar.gz
llvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.tar.bz2
llvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.tar.xz
Add a new watchdog timer interface. The interface does not permit handling timeouts, so
it's only really useful if you're going to crash anyways. Use it in the pretty stack trace printer to kill the compiler if we hang while printing the stack trace. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@177962 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Support/Unix')
-rw-r--r--lib/Support/Unix/Watchdog.inc32
1 files changed, 32 insertions, 0 deletions
diff --git a/lib/Support/Unix/Watchdog.inc b/lib/Support/Unix/Watchdog.inc
new file mode 100644
index 0000000000..5d89c0e51b
--- /dev/null
+++ b/lib/Support/Unix/Watchdog.inc
@@ -0,0 +1,32 @@
+//===--- Unix/Watchdog.inc - Unix Watchdog Implementation -------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file provides the generic Unix implementation of the Watchdog class.
+//
+//===----------------------------------------------------------------------===//
+
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+
+namespace llvm {
+ namespace sys {
+ Watchdog::Watchdog(unsigned int seconds) {
+#ifdef HAVE_UNISTD_H
+ alarm(seconds);
+#endif
+ }
+
+ Watchdog::~Watchdog() {
+#ifdef HAVE_UNISTD_H
+ alarm(0);
+#endif
+ }
+ }
+}