summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2010-05-08 02:10:34 +0000
committerDaniel Dunbar <daniel@zuster.org>2010-05-08 02:10:34 +0000
commitfb89e08413878571c1c1fc6ff15cdbf5cd8692dc (patch)
treeeb989a1df580b7372a8a6923709b03c242336664
parent59dc60337fb9c02c4fbec3b44d7275a32bafa775 (diff)
downloadexternal_llvm-fb89e08413878571c1c1fc6ff15cdbf5cd8692dc.zip
external_llvm-fb89e08413878571c1c1fc6ff15cdbf5cd8692dc.tar.gz
external_llvm-fb89e08413878571c1c1fc6ff15cdbf5cd8692dc.tar.bz2
Add llvm::sys::RunInterruptHandlers(), which runs the registered SIGINT cleanup
stuff. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103333 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/System/Signals.h4
-rw-r--r--lib/System/Unix/Signals.inc4
-rw-r--r--lib/System/Win32/Signals.inc4
3 files changed, 11 insertions, 1 deletions
diff --git a/include/llvm/System/Signals.h b/include/llvm/System/Signals.h
index 2b9d8ca..504420c 100644
--- a/include/llvm/System/Signals.h
+++ b/include/llvm/System/Signals.h
@@ -20,6 +20,10 @@
namespace llvm {
namespace sys {
+ /// This function runs all the registered interrupt handlers, including the
+ /// removal of files registered by RemoveFileOnSignal.
+ void RunInterruptHandlers();
+
/// This function registers signal handlers to ensure that if a signal gets
/// delivered that the named file is removed.
/// @brief Remove a file if a fatal signal occurs.
diff --git a/lib/System/Unix/Signals.inc b/lib/System/Unix/Signals.inc
index 56bf9e7..9548816 100644
--- a/lib/System/Unix/Signals.inc
+++ b/lib/System/Unix/Signals.inc
@@ -152,7 +152,9 @@ static RETSIGTYPE SignalHandler(int Sig) {
CallBacksToRun[i].first(CallBacksToRun[i].second);
}
-
+void llvm::sys::RunInterruptHandlers() {
+ SignalHandler(SIGINT);
+}
void llvm::sys::SetInterruptFunction(void (*IF)()) {
SignalsMutex.acquire();
diff --git a/lib/System/Win32/Signals.inc b/lib/System/Win32/Signals.inc
index f2b72ca..a3a393c 100644
--- a/lib/System/Win32/Signals.inc
+++ b/lib/System/Win32/Signals.inc
@@ -189,6 +189,10 @@ static void Cleanup() {
LeaveCriticalSection(&CriticalSection);
}
+void llvm::sys::RunInterruptHandlers() {
+ Cleanup();
+}
+
static LONG WINAPI LLVMUnhandledExceptionFilter(LPEXCEPTION_POINTERS ep) {
try {
Cleanup();