X-Git-Url: https://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fio%2Fio.c;h=8d43922351d51ba131e4c087b600bbdc013993c0;hb=d0458a433876acc01b48f74c1c3b966bbc29de57;hp=c19b25efe8d12acbe6c5ecc669d01ff54c4801c2;hpb=cef578da77d657701616161f3c3bf826186a024e;p=ccan diff --git a/ccan/io/io.c b/ccan/io/io.c index c19b25ef..8d439223 100644 --- a/ccan/io/io.c +++ b/ccan/io/io.c @@ -255,22 +255,17 @@ void io_wake(struct io_conn *conn, struct io_plan plan) /* It was idle, right? */ assert(!conn->plan.io); conn->plan = plan; - backend_wakeup(conn); + backend_plan_changed(conn); } -static struct io_plan do_next(struct io_conn *conn) +void io_ready(struct io_conn *conn) { - if (timeout_active(conn)) - backend_del_timeout(conn); - return conn->plan.next(conn, conn->plan.next_arg); -} - -struct io_plan do_ready(struct io_conn *conn) -{ - if (conn->plan.io(conn->fd.fd, &conn->plan)) - return do_next(conn); - - return conn->plan; + if (conn->plan.io(conn->fd.fd, &conn->plan)) { + if (timeout_active(conn)) + backend_del_timeout(conn); + conn->plan = conn->plan.next(conn, conn->plan.next_arg); + backend_plan_changed(conn); + } } /* Useful next functions. */