bool dispatch_test_check_evfilt_read_for_fd(int fd) { #if HAS_SYS_EVENT_H int kq = kqueue(); assert(kq != -1); struct kevent ke = { .ident = fd, .filter = EVFILT_READ, .flags = EV_ADD|EV_ENABLE, }; struct timespec t = { .tv_sec = 1, }; int r = kevent(kq, &ke, 1, &ke, 1, &t); close(kq); return r > 0; #else struct pollfd pfd = { .fd = fd, .events = POLLIN, }; int rc; do { rc = poll(&pfd, 1, 0); } while (rc == -1 && errno == EINTR); assert(rc != -1); return rc == 1; #endif } void _dispatch_test_current(const char* file, long line, const char* desc, dispatch_queue_t expected) { dispatch_queue_t actual = dispatch_get_current_queue(); _test_ptr(file, line, desc, actual, expected); }
bool dispatch_test_check_evfilt_read_for_fd(int fd) { int kq = kqueue(); assert(kq != -1); struct kevent ke = { .ident = fd, .filter = EVFILT_READ, .flags = EV_ADD|EV_ENABLE, }; struct timespec t = { .tv_sec = 1, }; int r = kevent(kq, &ke, 1, &ke, 1, &t); close(kq); return r > 0; } void _dispatch_test_current(const char* file, long line, const char* desc, dispatch_queue_t expected) { dispatch_queue_t actual = dispatch_get_current_queue(); _test_ptr(file, line, desc, actual, expected); }