#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 /*! \brief 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 /*! \brief 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 */ 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); /*! @} */