-/**
- * io_plan_no_debug - mark the next plan not to be called immediately.
- *
- * Most routines which take a plan are about to apply it to the current
- * connection. We (ab)use this pattern for debugging: as soon as such a
- * plan is created it is called, to create a linear call chain.
- *
- * Some routines, like io_break(), io_duplex() and io_wake() take an
- * io_plan, but they must not be applied immediately to the current
- * connection, so we call this first.
- *
- * Example:
- * #define io_break(ret, plan) (io_plan_no_debug(), io_break_((ret), (plan)))
- * struct io_plan io_break_(void *ret, struct io_plan plan);
- */
-#define io_plan_no_debug() ((io_plan_nodebug = true))
+ struct io_plan *(*next)(struct io_conn *, void *arg);
+ void *next_arg;
+
+ union io_plan_arg u1, u2;
+};