| #include <errno.h> | |
| #include <stddef.h> | |
| #ifdef _WIN32 | |
| #include <windows.h> | |
| #else | |
| #include <sys/select.h> | |
| #endif | |
| // Wait until file descriptor |fd| becomes readable. | |
| void yield_until_fd_readable(int fd) { | |
| for (;;) { | |
| fd_set read_fds; | |
| FD_ZERO(&read_fds); | |
| FD_SET(fd, &read_fds); | |
| int ret = select(fd + 1, &read_fds, NULL, NULL, NULL); | |
| if (ret == 1 || (ret < 0 && errno != -EINTR)) | |
| return; | |
| } | |
| } | |