X-Git-Url: http://git.ozlabs.org/?a=blobdiff_plain;f=ccan%2Fio%2Fio.h;h=e24beec4666a37284b72f545c735989119381ce5;hb=e7e57cbf6725debd99238ccd8e3bf273a8d7e61c;hp=1cf9d609973066c04c696f3412fd735ca241bf5d;hpb=0fbc79090f9ff5bc1caf8c0f0f05525a05f2e82d;p=ccan diff --git a/ccan/io/io.h b/ccan/io/io.h index 1cf9d609..e24beec4 100644 --- a/ccan/io/io.h +++ b/ccan/io/io.h @@ -7,6 +7,7 @@ #include struct timers; +struct timer; struct list_head; /** @@ -46,7 +47,8 @@ struct io_conn; * int fd[2]; * struct io_conn *conn; * - * pipe(fd); + * if (pipe(fd) != 0) + * exit(1); * conn = io_new_conn(NULL, fd[0], conn_init, (const char *)"hi!"); * if (!conn) * exit(1); @@ -629,16 +631,16 @@ struct io_plan *io_close_cb(struct io_conn *, void *unused); /** * io_loop - process fds until all closed on io_break. * @timers - timers which are waiting to go off (or NULL for none) - * @expired - a list filled with expired timers (can be NULL if @timers is) + * @expired - an expired timer (can be NULL if @timers is) * * This is the core loop; it exits with the io_break() arg, or NULL if - * all connections and listeners are closed, or with @expired set to a - * list of expired timers (if @timers isn't NULL). + * all connections and listeners are closed, or with @expired set to an + * expired timer (if @timers isn't NULL). * * Example: * io_loop(NULL, NULL); */ -void *io_loop(struct timers *timers, struct list_head *expired); +void *io_loop(struct timers *timers, struct timer **expired); /** * io_conn_fd - get the fd from a connection. @@ -648,6 +650,16 @@ void *io_loop(struct timers *timers, struct list_head *expired); */ int io_conn_fd(const struct io_conn *conn); +/** + * io_time_override - override the normal call for time. + * @nowfn: the function to call. + * + * io usually uses time_mono() internally, but this forces it + * to use your function (eg. for debugging). Returns the old + * one. + */ +struct timemono (*io_time_override(struct timemono (*now)(void)))(void); + /** * io_set_debug - set synchronous mode on a connection. * @conn: the connection.