blob: 19a2688fc28f4f133ec9b9dda04696a2995a6459 [file] [log] [blame]
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +02001#ifndef OSMO_SIGNAL_H
2#define OSMO_SIGNAL_H
Harald Welteec8b4502010-02-20 20:34:29 +01003
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +02004#include <stdint.h>
5
Harald Welteaf8e4352011-08-17 16:19:46 +02006/*! \defgroup signal Intra-application signals
7 * @{
8 */
9/*! \file signal.h */
10
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020011/* subsystem signaling numbers: we split the numberspace for applications and
12 * libraries: from 0 to UINT_MAX/2 for applications, from UINT_MAX/2 to
13 * UINT_MAX for libraries. */
14#define OSMO_SIGNAL_SS_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020015#define OSMO_SIGNAL_SS_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020016
Harald Welteaf8e4352011-08-17 16:19:46 +020017/*! \brief signal subsystems */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020018enum {
Harald Welte892e6212011-07-19 14:31:44 +020019 SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED,
20 SS_L_INPUT,
Harald Welte8cce1252012-06-16 16:37:57 +080021 SS_L_NS,
Holger Hans Peter Freyther2c9168c2013-10-10 20:21:33 +020022 SS_L_VTY,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020023};
24
25/* application-defined signal types. */
26#define OSMO_SIGNAL_T_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020027#define OSMO_SIGNAL_T_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020028
Harald Welteaf8e4352011-08-17 16:19:46 +020029/*! \brief signal types. */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020030enum {
Harald Welte892e6212011-07-19 14:31:44 +020031 S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020032};
33
Harald Welteaf8e4352011-08-17 16:19:46 +020034/*! signal callback function type */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020035typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010036
37
38/* Management */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020039int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
40void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
Harald Welteec8b4502010-02-20 20:34:29 +010041
42/* Dispatch */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020043void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010044
Sylvain Munautdca7d2c2012-04-18 21:53:23 +020045/*! @} */
Harald Welteaf8e4352011-08-17 16:19:46 +020046
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020047#endif /* OSMO_SIGNAL_H */