blob: d7132f9dc672140703a20afd21895bc58bde3450 [file] [log] [blame]
Sylvain Munaut12ba7782014-06-16 10:13:40 +02001#pragma once
Harald Welteec8b4502010-02-20 20:34:29 +01002
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +02003#include <stdint.h>
4
Harald Welteaf8e4352011-08-17 16:19:46 +02005/*! \defgroup signal Intra-application signals
6 * @{
7 */
8/*! \file signal.h */
9
Harald Welte2d2e2cc2016-04-25 12:11:20 +020010/*! subsystem signaling numbers: we split the numberspace for
11 * applications and libraries: from 0 to UINT_MAX/2 for applications,
12 * from UINT_MAX/2 to UINT_MAX for libraries. */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020013#define OSMO_SIGNAL_SS_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020014#define OSMO_SIGNAL_SS_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020015
Neels Hofmeyr87e45502017-06-20 00:17:59 +020016/*! signal subsystems */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020017enum {
Harald Welte892e6212011-07-19 14:31:44 +020018 SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED,
19 SS_L_INPUT,
Harald Welte8cce1252012-06-16 16:37:57 +080020 SS_L_NS,
Holger Hans Peter Freyther2c9168c2013-10-10 20:21:33 +020021 SS_L_VTY,
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
Neels Hofmeyr87e45502017-06-20 00:17:59 +020028/*! 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/*! @} */