mirror of
https://github.com/opnsense/src.git
synced 2026-02-28 04:10:49 -05:00
160 lines
4 KiB
C++
160 lines
4 KiB
C++
//===-- 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 <string>
|
|
#include <map>
|
|
|
|
// Other libraries and framework includes
|
|
// Project includes
|
|
#include "lldb/lldb-private.h"
|
|
#include "lldb/Core/ConstString.h"
|
|
|
|
namespace lldb_private
|
|
{
|
|
|
|
class UnixSignals
|
|
{
|
|
public:
|
|
static lldb::UnixSignalsSP
|
|
Create(const ArchSpec &arch);
|
|
|
|
//------------------------------------------------------------------
|
|
// 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;
|
|
|
|
int32_t
|
|
GetNumSignals() const;
|
|
|
|
int32_t
|
|
GetSignalAtIndex(int32_t index) const;
|
|
|
|
ConstString
|
|
GetShortName(ConstString name) 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,
|
|
bool default_suppress,
|
|
bool default_stop,
|
|
bool default_notify,
|
|
const char *description,
|
|
const char *alias = nullptr);
|
|
|
|
void
|
|
RemoveSignal (int signo);
|
|
|
|
protected:
|
|
//------------------------------------------------------------------
|
|
// Classes that inherit from UnixSignals can see and modify these
|
|
//------------------------------------------------------------------
|
|
|
|
struct Signal
|
|
{
|
|
ConstString m_name;
|
|
ConstString m_alias;
|
|
std::string m_description;
|
|
bool m_suppress:1,
|
|
m_stop:1,
|
|
m_notify:1;
|
|
|
|
Signal (const char *name,
|
|
bool default_suppress,
|
|
bool default_stop,
|
|
bool default_notify,
|
|
const char *description,
|
|
const char *alias);
|
|
|
|
~Signal () {}
|
|
};
|
|
|
|
virtual void
|
|
Reset ();
|
|
|
|
typedef std::map <int32_t, Signal> collection;
|
|
|
|
collection m_signals;
|
|
|
|
// GDBRemote signals need to be copyable.
|
|
UnixSignals(const UnixSignals &rhs);
|
|
|
|
const UnixSignals &
|
|
operator=(const UnixSignals &rhs) = delete;
|
|
};
|
|
|
|
} // Namespace lldb
|
|
#endif // lldb_UnixSignals_h_
|