//===-- UnixSignals.h -------------------------------------------*- C++ -*-===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// #ifndef lldb_UnixSignals_h_ #define lldb_UnixSignals_h_ // C Includes // C++ Includes #include #include // Other libraries and framework includes // Project includes #include "lldb/lldb-private.h" #include "lldb/Core/ConstString.h" namespace lldb_private { class UnixSignals { public: //------------------------------------------------------------------ // Constructors and Destructors //------------------------------------------------------------------ UnixSignals(); virtual ~UnixSignals(); const char * GetSignalAsCString (int32_t signo) const; bool SignalIsValid (int32_t signo) const; int32_t GetSignalNumberFromName (const char *name) const; const char * GetSignalInfo (int32_t signo, bool &should_suppress, bool &should_stop, bool &should_notify) const; bool GetShouldSuppress (int32_t signo) const; bool SetShouldSuppress (int32_t signo, bool value); bool SetShouldSuppress (const char *signal_name, bool value); bool GetShouldStop (int32_t signo) const; bool SetShouldStop (int32_t signo, bool value); bool SetShouldStop (const char *signal_name, bool value); bool GetShouldNotify (int32_t signo) const; bool SetShouldNotify (int32_t signo, bool value); bool SetShouldNotify (const char *signal_name, bool value); // These provide an iterator through the signals available on this system. // Call GetFirstSignalNumber to get the first entry, then iterate on GetNextSignalNumber // till you get back LLDB_INVALID_SIGNAL_NUMBER. int32_t GetFirstSignalNumber () const; int32_t GetNextSignalNumber (int32_t current_signal) const; // We assume that the elements of this object are constant once it is constructed, // since a process should never need to add or remove symbols as it runs. So don't // call these functions anywhere but the constructor of your subclass of UnixSignals or in // your Process Plugin's GetUnixSignals method before you return the UnixSignal object. void AddSignal (int signo, const char *name, const char *short_name, bool default_suppress, bool default_stop, bool default_notify, const char *description); void RemoveSignal (int signo); protected: //------------------------------------------------------------------ // Classes that inherit from UnixSignals can see and modify these //------------------------------------------------------------------ struct Signal { ConstString m_name; ConstString m_short_name; std::string m_description; bool m_suppress:1, m_stop:1, m_notify:1; Signal (const char *name, const char *short_name, bool default_suppress, bool default_stop, bool default_notify, const char *description); ~Signal () {} }; void Reset (); typedef std::map collection; collection m_signals; DISALLOW_COPY_AND_ASSIGN (UnixSignals); }; } // Namespace lldb #endif // lldb_UnixSignals_h_