#pragma once #include /*! \defgroup signal Intra-application signals * @{ * \file signal.h */ /*! subsystem signaling numbers: we split the numberspace for * applications and libraries: from 0 to UINT_MAX/2 for applications, * from UINT_MAX/2 to UINT_MAX for libraries. */ #define OSMO_SIGNAL_SS_APPS 0 #define OSMO_SIGNAL_SS_RESERVED 2147483648u /*! signal subsystems */ enum { SS_L_GLOBAL = OSMO_SIGNAL_SS_RESERVED, SS_L_INPUT, SS_L_NS, SS_L_VTY, }; /* application-defined signal types. */ #define OSMO_SIGNAL_T_APPS 0 #define OSMO_SIGNAL_T_RESERVED 2147483648u /*! signal types. */ enum { S_L_GLOBAL_SHUTDOWN = OSMO_SIGNAL_T_RESERVED, }; /*! signal callback function type */ typedef int osmo_signal_cbfn(unsigned int subsys, unsigned int signal, void *handler_data, void *signal_data); /* Management */ void *osmo_signal_talloc_ctx_init(void *root_ctx); int osmo_signal_register_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data); void osmo_signal_unregister_handler(unsigned int subsys, osmo_signal_cbfn *cbfn, void *data); /* Dispatch */ void osmo_signal_dispatch(unsigned int subsys, unsigned int signal, void *signal_data); /*! @} */