libassa 3.5.1
|
#include <SigHandler.h>
Public Member Functions | |
virtual | ~SigHandler () |
No-op virtual destructor. | |
virtual int | install (int signum_, EventHandler *new_hand_, SigAction *new_disp_=0, EventHandler **old_hand_=0, SigAction *old_disp_=0) |
Add new signal handler and new disposition for the signal. | |
virtual int | remove (int signum_, EventHandler *eh_=0, SigAction *new_disp_=0, SigAction *old_disp_=0) |
Remove EventHandler associated with signum_. | |
EventHandler * | handler (int signum_, EventHandler *new_) |
Set new event handler for signal signum_ and return an existing one. | |
EventHandler * | handler (int signum_) |
Retrieve current event handler for signum_. | |
Static Public Member Functions | |
static void | dispatch (int signum_) |
Here is the heart of SigHandler class. | |
Protected Member Functions | |
int | in_range (int signum_) |
Check that signum_ is in valid range. | |
Static Private Attributes | |
static EventHandler * | m_signal_handlers [NSIG] |
Static array that stores one user-defined event handler pointer for every signal. | |
Definition at line 49 of file SigHandler.h.
|
inlinevirtual |
Here is the heart of SigHandler class.
This callback function is really registered with OS to catch all of the signals EventHandlers have been installed for. dispatch () catches the signal and then calls sends the signal to the appropriate EventHandler object.
signum_ | signal delivered by OS. |
Definition at line 129 of file SigHandler.cpp.
References m_signal_handlers, ASSA::SIGHAND, and trace_with_mask.
Referenced by install().
EventHandler * SigHandler::handler | ( | int | signum_ | ) |
Retrieve current event handler for signum_.
Definition at line 57 of file SigHandler.cpp.
References in_range(), m_signal_handlers, ASSA::SIGHAND, and trace_with_mask.
EventHandler * SigHandler::handler | ( | int | signum_, |
EventHandler * | new_ | ||
) |
Set new event handler for signal signum_ and return an existing one.
Definition at line 41 of file SigHandler.cpp.
References in_range(), m_signal_handlers, ASSA::SIGHAND, and trace_with_mask.
Referenced by install().
Check that signum_ is in valid range.
Definition at line 26 of file SigHandler.cpp.
References DL, ASSA::SIGHAND, and trace_with_mask.
Referenced by handler(), handler(), install(), ASSA::SigHandlers::install(), ASSA::SigHandlers::remove(), and remove().
|
virtual |
Add new signal handler and new disposition for the signal.
Note that although new_disp_ might keep C-like handler for the action, new_hand_ will really be handling delivered signal. In other words, new_disp_.sa_handler is ignored.
signum_ | signal number new disposition is installed for. |
new_hand_ | pointer to new EventHandler that will be handling the signal |
new_disp_ | new disposition to use in handling the signal |
old_hand_ | return old handler for the signal |
old_disp_ | return old disposition for the signal |
Reimplemented in ASSA::SigHandlers.
Definition at line 69 of file SigHandler.cpp.
References dispatch(), handler(), in_range(), ASSA::SIGHAND, and trace_with_mask.
Referenced by ASSA::Fork::Fork().
|
virtual |
Remove EventHandler associated with signum_.
Also, install new disposition and return an old one (if given).
signum_ | signal number new disposition is installed for. |
eh_ | pointer to EventHandler that is uninstalled. If eh_ is 0 (by default), all event handlers associated with signum_ will be removed. |
new_disp_ | new disposition to use in handling the signal |
old_disp_ | return old disposition for the signal |
Reimplemented in ASSA::SigHandlers.
Definition at line 106 of file SigHandler.cpp.
References in_range(), m_signal_handlers, ASSA::SIGHAND, and trace_with_mask.
Referenced by ASSA::Fork::Fork().
|
staticprivate |
Static array that stores one user-defined event handler pointer for every signal.
Definition at line 127 of file SigHandler.h.
Referenced by dispatch(), handler(), handler(), and remove().