From fb89e08413878571c1c1fc6ff15cdbf5cd8692dc Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 8 May 2010 02:10:34 +0000 Subject: [PATCH] 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 --- include/llvm/System/Signals.h | 4 ++++ lib/System/Unix/Signals.inc | 4 +++- lib/System/Win32/Signals.inc | 4 ++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/include/llvm/System/Signals.h b/include/llvm/System/Signals.h index 2b9d8ca6bf9..504420cd402 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 56bf9e76e60..9548816e1d4 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 f2b72ca70fd..a3a393c76e4 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();