blob: 449b9762fbc11e9046c9adb23247a54045d96367 [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 * @{
Neels Hofmeyr17518fe2017-06-20 04:35:06 +02007 * \file signal.h */
Harald Welteaf8e4352011-08-17 16:19:46 +02008
Harald Welte2d2e2cc2016-04-25 12:11:20 +02009/*! subsystem signaling numbers: we split the numberspace for
10 * applications and libraries: from 0 to UINT_MAX/2 for applications,
11 * from UINT_MAX/2 to UINT_MAX for libraries. */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020012#define OSMO_SIGNAL_SS_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020013#define OSMO_SIGNAL_SS_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020014
Neels Hofmeyr87e45502017-06-20 00:17:59 +020015/*! signal subsystems */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020016enum {
Harald Welte892e6212011-07-19 14:31:44 +020017 SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED,
18 SS_L_INPUT,
Harald Welte8cce1252012-06-16 16:37:57 +080019 SS_L_NS,
Holger Hans Peter Freyther2c9168c2013-10-10 20:21:33 +020020 SS_L_VTY,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020021};
22
23/* application-defined signal types. */
24#define OSMO_SIGNAL_T_APPS 0
Holger Hans Peter Freytherc2c0ad72011-08-22 15:31:17 +020025#define OSMO_SIGNAL_T_RESERVED 2147483648u
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020026
Neels Hofmeyr87e45502017-06-20 00:17:59 +020027/*! signal types. */
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020028enum {
Harald Welte892e6212011-07-19 14:31:44 +020029 S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020030};
31
Harald Welteaf8e4352011-08-17 16:19:46 +020032/*! signal callback function type */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020033typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010034
35
36/* Management */
Pau Espin Pedrol0b6fcb02018-08-16 19:05:19 +020037void *osmo_signal_talloc_ctx_init(void *root_ctx);
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/*! @} */