Clean up "Detect hang of McKernel in mcexec"

* Clean up error checks
This commit is contained in:
Masamichi Takagi
2018-06-01 14:39:12 +09:00
parent 056fdb2633
commit 328609269b

View File

@ -1053,38 +1053,47 @@ static void *watchdog_thread_func(void *arg) {
} }
do { do {
int nfd = epoll_wait(epfd, &event_out, 1, -1); int nfd;
uint64_t counter;
ssize_t nread;
nfd = epoll_wait(epfd, &event_out, 1, -1);
if (nfd == -1) { if (nfd == -1) {
if (errno == EINTR) { if (errno == EINTR) {
continue; continue;
} }
fprintf(stderr, "%s: Error: epoll_wait failed (%s)\n", __FUNCTION__, strerror(errno)); fprintf(stderr, "%s: Error: epoll_wait failed (%s)\n", __FUNCTION__, strerror(errno));
goto out; goto out;
} else if (nfd == 0) { }
if (nfd == 0) {
fprintf(stderr, "%s: Error: epoll_wait timed out unexpectedly\n", __FUNCTION__); fprintf(stderr, "%s: Error: epoll_wait timed out unexpectedly\n", __FUNCTION__);
goto out; goto out;
} else if (nfd > 1) { }
if (nfd > 1) {
fprintf(stderr, "%s: Error: Too many (%d) events\n", __FUNCTION__, nfd); fprintf(stderr, "%s: Error: Too many (%d) events\n", __FUNCTION__, nfd);
goto out; goto out;
} else { }
if (event_out.data.fd == evfd) {
uint64_t counter; if (event_out.data.fd != evfd) {
ssize_t nread = read(evfd, &counter, sizeof(counter)); fprintf(stderr, "%s: Error: Unknown event (fd:%d)\n", __FUNCTION__, event_out.data.fd);
if (nread == 0) { goto out;
fprintf(stderr, "%s: Error: read got EOF\n", __FUNCTION__); }
goto out;
} else if (nread == -1) { nread = read(evfd, &counter, sizeof(counter));
fprintf(stderr, "%s: Error: read failed (%s)\n", __FUNCTION__, strerror(errno)); if (nread == 0) {
goto out; fprintf(stderr, "%s: Error: read got EOF\n", __FUNCTION__);
} else { goto out;
fprintf(stderr, "mcexec detected hang of McKernel\n"); }
exit(EXIT_FAILURE);
} if (nread == -1) {
} else { fprintf(stderr, "%s: Error: read failed (%s)\n", __FUNCTION__, strerror(errno));
fprintf(stderr, "%s: Error: Unknown event (fd:%d)\n", __FUNCTION__, event_out.data.fd); goto out;
goto out; }
}
} fprintf(stderr, "mcexec detected hang of McKernel\n");
exit(EXIT_FAILURE);
} while (1); } while (1);
out: out: