From 92235fb259b0ebdfc99859c2c95fe1f8c163f411 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Tue, 8 Nov 2016 20:09:05 -0500 Subject: trying out distortos --- include/distortos/SignalAction.hpp | 96 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 include/distortos/SignalAction.hpp (limited to 'include/distortos/SignalAction.hpp') diff --git a/include/distortos/SignalAction.hpp b/include/distortos/SignalAction.hpp new file mode 100644 index 0000000..d91d696 --- /dev/null +++ b/include/distortos/SignalAction.hpp @@ -0,0 +1,96 @@ +/** + * \file + * \brief SignalAction class header + * + * \author Copyright (C) 2015 Kamil Szczygiel http://www.distortec.com http://www.freddiechopin.info + * + * \par License + * This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not + * distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. + */ + +#ifndef INCLUDE_DISTORTOS_SIGNALACTION_HPP_ +#define INCLUDE_DISTORTOS_SIGNALACTION_HPP_ + +#include "distortos/SignalSet.hpp" + +namespace distortos +{ + +class SignalInformation; + +/** + * \brief SignalAction class contains information needed to handle signal that was caught + * + * Similar to \a sigaction - http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/signal.h.html + * + * \ingroup signals + */ + +class SignalAction +{ +public: + + /// handler function + using Handler = void(const SignalInformation&); + + /** + * \brief SignalAction's constructor which uses "default" signal handler. + */ + + constexpr SignalAction() : + signalMask_{SignalSet::empty}, + handler_{} + { + + } + + /** + * \brief SignalAction's constructor. + * + * \param [in] handler is a reference to handler function (similar to \a sa_sigaction member of \a sigaction) + * \param [in] signalMask is the additional set of signals to be masked during execution of signal-catching function + * (similar to \a sa_mask member of \a sigaction) + */ + + constexpr SignalAction(Handler& handler, const SignalSet signalMask) : + signalMask_{signalMask}, + handler_{&handler} + { + + } + + /** + * \return pointer to handler function (similar to \a sa_sigaction member of \a sigaction), nullptr if use of + * default handler was configured (similar to \a SIG_DFL) + */ + + Handler* getHandler() const + { + return handler_; + } + + /** + * \return additional set of signals to be masked during execution of signal-catching function (similar to + * \a sa_mask member of \a sigaction) + */ + + SignalSet getSignalMask() const + { + return signalMask_; + } + +private: + + /// additional set of signals to be masked during execution of signal-catching function (similar to \a sa_mask + /// member of \a sigaction) + SignalSet signalMask_; + + /// pointer to handler function (similar to \a sa_sigaction member of \a sigaction), nullptr to use default handler + /// (similar to \a SIG_DFL) + Handler* handler_; +}; + +} // namespace distortos + +#endif // INCLUDE_DISTORTOS_SIGNALACTION_HPP_ -- cgit v1.2.3