X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FSystem%2FSignals.h;h=197e4e1d2d61324eef79d4857b989a20be80f737;hb=0f8b53f19d29013ab18f3d444cea1e6305405611;hp=86e5f910ba6a76025ae2273d1b2f625052125819;hpb=7a73b80b9052136c8cd2234eb3433a07df7cf38e;p=oota-llvm.git diff --git a/include/llvm/System/Signals.h b/include/llvm/System/Signals.h index 86e5f910ba6..197e4e1d2d6 100644 --- a/include/llvm/System/Signals.h +++ b/include/llvm/System/Signals.h @@ -1,24 +1,52 @@ -//===- Support/Signals.h - Signal Handling support -------------*- C++ -*-===// +//===- llvm/System/Signals.h - 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 occuring while your program is running. // //===----------------------------------------------------------------------===// -#ifndef SUPPORT_SIGNALS_H -#define SUPPORT_SIGNALS_H +#ifndef LLVM_SYSTEM_SIGNALS_H +#define LLVM_SYSTEM_SIGNALS_H -#include +#include "llvm/System/Path.h" -// -// This will include the signal handler return type. -// -#include "Config/config.h" +namespace llvm { +namespace sys { -// RemoveFileOnSignal - This function registers signal handlers to ensure that -// if a signal gets delivered that the named file is removed. -// -void RemoveFileOnSignal(const std::string &Filename); + /// 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. + bool RemoveFileOnSignal(const Path &Filename, std::string* ErrMsg = 0); -#endif + /// This function registers a signal handler to ensure that if a fatal signal + /// gets delivered to the process that the named directory and all its + /// contents are removed. + /// @brief Remove a directory if a fatal signal occurs. + bool RemoveDirectoryOnSignal(const Path& path, std::string* ErrMsg = 0); + + /// When an error signal (such as SIBABRT or SIGSEGV) is delivered to the + /// process, print a stack trace and then exit. + /// @brief Print a stack trace if a fatal signal occurs. + void PrintStackTraceOnErrorSignal(); + /// This function registers a function to be called when the user "interrupts" + /// the program (typically by pressing ctrl-c). When the user interrupts the + /// program, the specified interrupt function is called instead of the program + /// being killed, and the interrupt function automatically disabled. Note + /// that interrupt functions are not allowed to call any non-reentrant + /// functions. An null interrupt function pointer disables the current + /// installed function. Note also that the handler may be executed on a + /// different thread on some platforms. + /// @brief Register a function to be called when ctrl-c is pressed. + void SetInterruptFunction(void (*IF)()); +} // End sys namespace +} // End llvm namespace + +#endif