int rv, s, size = mb[0] >> 16;
int rv, s; size_t size = mb[0] >> 14 & 3;
iop_msg_post(struct iop_softc *sc, struct iop_msg *im, void *xmb, int timo){	u_int32_t *mb = xmb;	int rv, s, size = mb[0] >> 16;	/* Terminate the scatter/gather list chain. */	if ((im->im_flags & IM_SGLOFFADJ) != 0)		mb[size - 2] |= I2O_SGL_END;	if ((rv = iop_post(sc, mb, size)) != 0)		return (rv);	if ((im->im_flags & IM_DISCARD) != 0)		iop_msg_free(sc, im);	else if ((im->im_flags & IM_POLL) != 0 && timo == 0) {		/* XXX For ofifo_init(). */		rv = 0;	} else if ((im->im_flags & (IM_POLL | IM_WAIT)) != 0) {		if ((im->im_flags & IM_POLL) != 0)			iop_msg_poll(sc, im, timo);		else			iop_msg_wait(sc, im, timo);		s = splbio();		if ((im->im_flags & IM_REPLIED) != 0) {			if ((im->im_flags & IM_NOSTATUS) != 0)				rv = 0;			else if ((im->im_flags & IM_FAIL) != 0)				rv = ENXIO;			else if (im->im_reqstatus != I2O_STATUS_SUCCESS)				rv = EIO;			else				rv = 0;		} else			rv = EBUSY;		splx(s);	} else		rv = 0;	return (rv);}