+ struct kevent changes[2];
+ int nchanges = 0;
+ int res;
+
+ EV_SET(&changes[nchanges++], fd->fd, EVFILT_READ, EV_ADD, 0, 0, fd);
+ EV_SET(&changes[nchanges++], fd->fd, EVFILT_WRITE, fd_wants_writes(fd) ? EV_ADD : EV_DELETE, 0, 0, fd);
+ res = kevent(kq_fd, changes, nchanges, NULL, 0, NULL);
+ if (res < 0) {
+ log_module(MAIN_LOG, LOG_ERROR, "kevent() add failed: %s", strerror(errno));
+ }