-struct io_plan *io_break(void *arg, struct io_next *next);
-
-/**
- * io_next - indicate what callback to call next.
- * @conn: this connection.
- * @next: the next function to call once queued IO is complete.
- * @arg: the argument to @next.
- *
- * Every @next (or @start) function should "return io_next(...);" once
- * they have indicated what io to perform (eg. io_write, io_idle).
- * The exception is io_close(), which can be used instead of io_next().
- *
- * Note that as an optimization, the next function may be called
- * immediately, which is why this should be the last statement in your
- * function.
- */
-#define io_next(conn, next, arg) \
- io_next_((conn), \
- typesafe_cb_preargs(struct io_plan *, void *, \
- (next), (arg), struct io_conn *), \
- (arg))
-struct io_next *io_next_(struct io_conn *conn,
- struct io_plan *(*next)(struct io_conn *, void *arg),
- void *arg);
+#define io_break(conn, ret, fn, arg) \
+ io_break_((conn), (ret), \
+ typesafe_cb_preargs(struct io_plan *, void *, \
+ (fn), (arg), struct io_conn *), \
+ (arg))
+struct io_plan *io_break_(struct io_conn *conn, void *ret,
+ struct io_plan *(*fn)(struct io_conn *, void *),
+ void *arg);