Sylvain Munaut | 12ba778 | 2014-06-16 10:13:40 +0200 | [diff] [blame] | 1 | #pragma once |
Harald Welte | ec8b450 | 2010-02-20 20:34:29 +0100 | [diff] [blame] | 2 | |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 3 | #include <stdint.h> |
| 4 | |
Harald Welte | af8e435 | 2011-08-17 16:19:46 +0200 | [diff] [blame] | 5 | /*! \defgroup signal Intra-application signals |
| 6 | * @{ |
Neels Hofmeyr | 17518fe | 2017-06-20 04:35:06 +0200 | [diff] [blame] | 7 | * \file signal.h */ |
Harald Welte | af8e435 | 2011-08-17 16:19:46 +0200 | [diff] [blame] | 8 | |
Harald Welte | 2d2e2cc | 2016-04-25 12:11:20 +0200 | [diff] [blame] | 9 | /*! 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 Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 12 | #define OSMO_SIGNAL_SS_APPS 0 |
Holger Hans Peter Freyther | c2c0ad7 | 2011-08-22 15:31:17 +0200 | [diff] [blame] | 13 | #define OSMO_SIGNAL_SS_RESERVED 2147483648u |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 14 | |
Neels Hofmeyr | 87e4550 | 2017-06-20 00:17:59 +0200 | [diff] [blame] | 15 | /*! signal subsystems */ |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 16 | enum { |
Harald Welte | 892e621 | 2011-07-19 14:31:44 +0200 | [diff] [blame] | 17 | SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED, |
| 18 | SS_L_INPUT, |
Harald Welte | 8cce125 | 2012-06-16 16:37:57 +0800 | [diff] [blame] | 19 | SS_L_NS, |
Holger Hans Peter Freyther | 2c9168c | 2013-10-10 20:21:33 +0200 | [diff] [blame] | 20 | SS_L_VTY, |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 21 | }; |
| 22 | |
| 23 | /* application-defined signal types. */ |
| 24 | #define OSMO_SIGNAL_T_APPS 0 |
Holger Hans Peter Freyther | c2c0ad7 | 2011-08-22 15:31:17 +0200 | [diff] [blame] | 25 | #define OSMO_SIGNAL_T_RESERVED 2147483648u |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 26 | |
Neels Hofmeyr | 87e4550 | 2017-06-20 00:17:59 +0200 | [diff] [blame] | 27 | /*! signal types. */ |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 28 | enum { |
Harald Welte | 892e621 | 2011-07-19 14:31:44 +0200 | [diff] [blame] | 29 | S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED, |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 30 | }; |
| 31 | |
Harald Welte | af8e435 | 2011-08-17 16:19:46 +0200 | [diff] [blame] | 32 | /*! signal callback function type */ |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 33 | typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data); |
Harald Welte | ec8b450 | 2010-02-20 20:34:29 +0100 | [diff] [blame] | 34 | |
| 35 | |
| 36 | /* Management */ |
Pau Espin Pedrol | 0b6fcb0 | 2018-08-16 19:05:19 +0200 | [diff] [blame] | 37 | void *osmo_signal_talloc_ctx_init(void *root_ctx); |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 38 | int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data); |
| 39 | void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data); |
Harald Welte | ec8b450 | 2010-02-20 20:34:29 +0100 | [diff] [blame] | 40 | |
| 41 | /* Dispatch */ |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 42 | void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data); |
Harald Welte | ec8b450 | 2010-02-20 20:34:29 +0100 | [diff] [blame] | 43 | |
Sylvain Munaut | dca7d2c | 2012-04-18 21:53:23 +0200 | [diff] [blame] | 44 | /*! @} */ |