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
This commit is contained in:
Daniel Dunbar 2010-05-08 02:10:34 +00:00
parent 59dc60337f
commit fb89e08413
3 changed files with 11 additions and 1 deletions

View File

@ -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.

View File

@ -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();

View File

@ -189,6 +189,10 @@ static void Cleanup() {
LeaveCriticalSection(&CriticalSection);
}
void llvm::sys::RunInterruptHandlers() {
Cleanup();
}
static LONG WINAPI LLVMUnhandledExceptionFilter(LPEXCEPTION_POINTERS ep) {
try {
Cleanup();