diff options
author | Nick Lewycky <nicholas@mxc.ca> | 2013-03-26 01:27:52 +0000 |
---|---|---|
committer | Nick Lewycky <nicholas@mxc.ca> | 2013-03-26 01:27:52 +0000 |
commit | d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8 (patch) | |
tree | 15d39954fc3335a5db0e76df41dd884402acba88 /include | |
parent | bd3148b2857139e8737945f5df1a1ea1f4aff3b9 (diff) | |
download | external_llvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.zip external_llvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.tar.gz external_llvm-d5e1be03eda2e8036f136fdf12a5f5d9e1e684d8.tar.bz2 |
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 'include')
-rw-r--r-- | include/llvm/Support/Watchdog.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/include/llvm/Support/Watchdog.h b/include/llvm/Support/Watchdog.h new file mode 100644 index 0000000..b58496b --- /dev/null +++ b/include/llvm/Support/Watchdog.h @@ -0,0 +1,38 @@ +//===--- Watchdog.h - Watchdog timer ----------------------------*- C++ -*-===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// This file declares the llvm::sys::Watchdog class. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_SUPPORT_WATCHDOG_H +#define LLVM_SUPPORT_WATCHDOG_H + +#include "llvm/Support/Compiler.h" + +namespace llvm { + namespace sys { + + /// This class provides an abstraction for a timeout around an operation + /// that must complete in a given amount of time. Failure to complete before + /// the timeout is an unrecoverable situation and no mechanisms to attempt + /// to handle it are provided. + class Watchdog { + public: + Watchdog(unsigned int seconds); + ~Watchdog(); + private: + // Noncopyable. + Watchdog(const Watchdog &other) LLVM_DELETED_FUNCTION; + Watchdog &operator=(const Watchdog &other) LLVM_DELETED_FUNCTION; + }; + } +} + +#endif |