#pragma once

#include <stdint.h>

/*! \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);

/*! @} */
