blob: 2442e510e7c5c03eed7ebe694597a2b972093739 [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
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. */
13enum {
Harald Welte892e6212011-07-19 14:31:44 +020014 SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED,
15 SS_L_INPUT,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020016};
17
18/* application-defined signal types. */
19#define OSMO_SIGNAL_T_APPS 0
20#define OSMO_SIGNAL_T_RESERVED 2147483648
21
22/* signal types. */
23enum {
Harald Welte892e6212011-07-19 14:31:44 +020024 S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED,
Pablo Neira Ayuso39c02432011-07-07 19:46:34 +020025};
26
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020027typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010028
29
30/* Management */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020031int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
32void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data);
Harald Welteec8b4502010-02-20 20:34:29 +010033
34/* Dispatch */
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020035void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data);
Harald Welteec8b4502010-02-20 20:34:29 +010036
Pablo Neira Ayusoa10dd352011-05-07 12:42:45 +020037#endif /* OSMO_SIGNAL_H */