kdmsg_state
RB_GENERATE(kdmsg_state_tree, kdmsg_state, rbnode, kdmsg_state_cmp);
struct kdmsg_state;
TAILQ_HEAD(kdmsg_state_list, kdmsg_state);
RB_ENTRY(kdmsg_state) rbnode; /* indexed by msgid */
struct kdmsg_state *scan; /* scan check */
TAILQ_ENTRY(kdmsg_state) entry; /* on parent subq */
TAILQ_ENTRY(kdmsg_state) user_entry; /* available to devices */
struct kdmsg_state *parent;
int (*func)(struct kdmsg_state *, struct kdmsg_msg *);
struct kdmsg_state *state;
typedef struct kdmsg_state kdmsg_state_t;
RB_HEAD(kdmsg_state_tree, kdmsg_state);
RB_PROTOTYPE(kdmsg_state_tree, kdmsg_state, rbnode, kdmsg_state_cmp);
struct kdmsg_state state0; /* root state for stacking */
struct kdmsg_state *conn_state; /* active LNK_CONN state */
struct kdmsg_state *freerd_state; /* allocation cache */
struct kdmsg_state *freewr_state; /* allocation cache */