static void iv_fd_register_epilogue(struct iv_state *st, struct iv_fd_ *fd) { int yes; st->numobjs++; st->numfds++; iv_fd_set_cloexec(fd->fd); iv_fd_set_nonblock(fd->fd); yes = 1; setsockopt(fd->fd, SOL_SOCKET, SO_OOBINLINE, &yes, sizeof(yes)); }
static int iv_fd_kqueue_init(struct iv_state *st) { int kqueue_fd; kqueue_fd = kqueue(); if (kqueue_fd < 0) return -1; iv_fd_set_cloexec(kqueue_fd); st->u.kqueue.kqueue_fd = kqueue_fd; INIT_IV_LIST_HEAD(&st->u.kqueue.notify); return 0; }
static int iv_fd_port_init(struct iv_state *st) { int fd; fd = port_create(); if (fd < 0) return -1; iv_fd_set_cloexec(fd); INIT_IV_LIST_HEAD(&st->u.port.notify); st->u.port.port_fd = fd; st->u.port.timer_id = -1; return 0; }