diff --git a/test/iomux_signal_test.c b/test/iomux_signal_test.c new file mode 100644 index 0000000..fc7984f --- /dev/null +++ b/test/iomux_signal_test.c @@ -0,0 +1,41 @@ +#include "ucore/iomux_signal.h" +#include +#include +#include +#include +#include + +void sig_handler(struct IOMux *mux, int signo, void *cookie) +{ + char sig_str[64]; + snprintf(sig_str, sizeof sig_str, "Got signal %d\n", signo); + + write(STDOUT_FILENO, sig_str, strlen(sig_str)); +} + +int main(int argc, char *argv[]) +{ + + struct IOMux *mux = iomux_create(IOMUX_TYPE_EPOLL); + int rc; + + rc = iomux_register_unixsignal(mux, SIGKILL, sig_handler, NULL); + assert(rc != 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc == 0); + rc = iomux_unregister_unixsignal(mux, SIGINT); + assert(rc == 0); + rc = iomux_unregister_unixsignal(mux, SIGUSR1); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGINT, sig_handler, NULL); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc == 0); + rc = iomux_register_unixsignal(mux, SIGUSR1, sig_handler, NULL); + assert(rc != 0); + + iomux_run(mux); + iomux_delete(mux); + + return 0; +}