epoll/kqueue wrap