static void local_handler(int listen_fd, int events, void *data) { struct signalfd_siginfo siginfo; int ret; if (events & EPOLLHUP) { eprintf("local driver received EPOLLHUP event, exiting.\n"); log_close(); exit(1); } dprintf("read siginfo\n"); ret = read(sigfd, &siginfo, sizeof(siginfo)); assert(ret == sizeof(siginfo)); shm_queue_lock(); while (local_process_event()) ; shm_queue_unlock(); }
static void local_handler(int listen_fd, int events, void *data) { struct signalfd_siginfo siginfo; int ret; if (events & EPOLLHUP) { sd_err("local driver received EPOLLHUP event, exiting."); log_close(); exit(1); } sd_debug("read siginfo"); ret = read(sigfd, &siginfo, sizeof(siginfo)); if (ret != sizeof(siginfo)) panic("failed to read from sigfd, %m"); shm_queue_lock(); while (local_process_event()) ; shm_queue_unlock(); }