forked from OSchip/llvm-project
47 lines
1.4 KiB
C++
47 lines
1.4 KiB
C++
//===- Signals.cpp - Signal Handling support --------------------*- C++ -*-===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
//
|
|
// This file defines some helpful functions for dealing with the possibility of
|
|
// Unix signals occurring while your program is running.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "llvm/Config/config.h"
|
|
#include "llvm/Support/ManagedStatic.h"
|
|
#include "llvm/Support/Signals.h"
|
|
|
|
#include <vector>
|
|
|
|
namespace llvm {
|
|
using namespace sys;
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
//=== WARNING: Implementation here must contain only TRULY operating system
|
|
//=== independent code.
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
static ManagedStatic<std::vector<std::pair<void (*)(void *), void *>>>
|
|
CallBacksToRun;
|
|
void sys::RunSignalHandlers() {
|
|
if (!CallBacksToRun.isConstructed())
|
|
return;
|
|
for (auto &I : *CallBacksToRun)
|
|
I.first(I.second);
|
|
CallBacksToRun->clear();
|
|
}
|
|
}
|
|
|
|
// Include the platform-specific parts of this class.
|
|
#ifdef LLVM_ON_UNIX
|
|
#include "Unix/Signals.inc"
|
|
#endif
|
|
#ifdef LLVM_ON_WIN32
|
|
#include "Windows/Signals.inc"
|
|
#endif
|