Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 1 | #ifndef OSMO_SIGNAL_H |
| 2 | #define OSMO_SIGNAL_H |
Harald Welte | ec8b450 | 2010-02-20 20:34:29 +0100 | [diff] [blame] | 3 | |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 4 | #include <stdint.h> |
| 5 | |
| 6 | /* subsystem signaling numbers: we split the numberspace for applications and |
| 7 | * libraries: from 0 to UINT_MAX/2 for applications, from UINT_MAX/2 to |
| 8 | * UINT_MAX for libraries. */ |
| 9 | #define OSMO_SIGNAL_SS_APPS 0 |
| 10 | #define OSMO_SIGNAL_SS_RESERVED 2147483648 |
| 11 | |
| 12 | /* signal subsystems. */ |
| 13 | enum { |
Harald Welte | 892e621 | 2011-07-19 14:31:44 +0200 | [diff] [blame] | 14 | SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED, |
| 15 | SS_L_INPUT, |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 16 | }; |
| 17 | |
| 18 | /* application-defined signal types. */ |
| 19 | #define OSMO_SIGNAL_T_APPS 0 |
| 20 | #define OSMO_SIGNAL_T_RESERVED 2147483648 |
| 21 | |
| 22 | /* signal types. */ |
| 23 | enum { |
Harald Welte | 892e621 | 2011-07-19 14:31:44 +0200 | [diff] [blame] | 24 | S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED, |
Pablo Neira Ayuso | 39c0243 | 2011-07-07 19:46:34 +0200 | [diff] [blame] | 25 | }; |
| 26 | |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 27 | 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] | 28 | |
| 29 | |
| 30 | /* Management */ |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 31 | int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data); |
| 32 | 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] | 33 | |
| 34 | /* Dispatch */ |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 35 | 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] | 36 | |
Pablo Neira Ayuso | a10dd35 | 2011-05-07 12:42:45 +0200 | [diff] [blame] | 37 | #endif /* OSMO_SIGNAL_H */ |