We keep a list of non blocking fds and use awake to make them not block on read, write, pread and pwrite.