blob: b3a5aaee829ea24f44a6aa0886d0cd73b100b948 [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,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020022};
23
24/* application-defined signal types. */
25#define OSMO_SIGNAL_T_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020026#define OSMO_SIGNAL_T_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020027
Harald Welteaf8e4352011-08-17 16:19:46 +020028/*! \brief signal types. */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020029enum {
Harald Welte892e6212011-07-19 14:31:44 +020030 S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020031};
32
Harald Welteaf8e4352011-08-17 16:19:46 +020033/*! signal callback function type */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020034typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010035
36
37/* Management */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020038int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
39void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
Harald Welteec8b4502010-02-20 20:34:29 +010040
41/* Dispatch */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020042void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010043
Sylvain Munautdca7d2c2012-04-18 21:53:23 +020044/*! @} */
Harald Welteaf8e4352011-08-17 16:19:46 +020045
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020046#endif /* OSMO_SIGNAL_H */