59 #include <event2/event.h>
61 #include <amxc/amxc.h>
68 #define UNUSED __attribute__((unused))
70 static struct event_base*
base = NULL;
79 UNUSED const amxc_var_t*
const data,
81 printf(
"Signal SIGINT recieved\n\n");
85 UNUSED const amxc_var_t*
const data,
87 printf(
"Signal SIGTERM recieved - stop eventloop\n\n");
88 event_base_loopbreak(
base);
92 const amxc_var_t*
const data,
95 printf(
"Signal recieved [%s]\n", sig_name);
96 printf(
"\tssi_signo = %u\n", siginfo->ssi_signo);
97 printf(
"\tssi_errno = %d\n", siginfo->ssi_errno);
98 printf(
"\tssi_code = %d\n", siginfo->ssi_code);
99 printf(
"\tssi_pid = %u\n", siginfo->ssi_pid);
100 printf(
"\tssi_uid = %u\n", siginfo->ssi_uid);
101 printf(
"\tssi_fd = %d\n", siginfo->ssi_fd);
102 printf(
"\tssi_tid = %u\n", siginfo->ssi_tid);
103 printf(
"\tssi_band = %u\n", siginfo->ssi_band);
104 printf(
"\tssi_overrun = %u\n", siginfo->ssi_overrun);
105 printf(
"\tssi_trapno = %u\n", siginfo->ssi_trapno);
106 printf(
"\tssi_status = %u\n", siginfo->ssi_status);
107 printf(
"\tssi_int = %u\n", siginfo->ssi_int);
114 struct event* sig_event = NULL;
116 base = event_base_new();
133 event_add(sig_event, NULL);
135 event_base_dispatch(
base);
137 event_del(sig_event);
138 event_free(sig_event);
139 event_base_free(
base);
Ambiorix signal manager and signal API header file.
Ambiorix slot API header file.
Ambiorix Linux Signal Handling.
static void slot_system_signal(const char *const sig_name, const amxc_var_t *const data, __attribute__((unused)) void *priv)
static void signal_cb(__attribute__((unused)) evutil_socket_t fd, __attribute__((unused)) short event, __attribute__((unused)) void *arg)
static struct event_base * base
static void slot_sigterm(__attribute__((unused)) const char *const sig_name, __attribute__((unused)) const amxc_var_t *const data, __attribute__((unused)) void *priv)
static void slot_sigint(__attribute__((unused)) const char *const sig_name, __attribute__((unused)) const amxc_var_t *const data, __attribute__((unused)) void *priv)
int amxp_slot_connect(amxp_signal_mngr_t *const sig_mngr, const char *const sig_name, const char *const expression, amxp_slot_fn_t fn, void *const priv)
Connects a slot (function) to a named signal of a signal manager.
int amxp_syssig_get_fd(void)
Returns a file descriptor that can be used in an eventloop.
int amxp_syssig_read(void)
Reads from the file descriptor.
int amxp_syssig_enable(const int sigid, const bool enable)
Enables or disables monitoring of a system signal.
struct signalfd_siginfo amxp_siginfo_t