int s;
int hashnum, mflags, s;
aha_get_ccb(sc, flags)	struct aha_softc *sc;	int flags;{	struct aha_ccb *ccb;	int s;	s = splbio();	/*	 * If we can and have to, sleep waiting for one to come free	 * but only if we can't allocate a new one.	 */	for (;;) {		ccb = sc->sc_free_ccb.tqh_first;		if (ccb) {			TAILQ_REMOVE(&sc->sc_free_ccb, ccb, chain);			break;		}		if (sc->sc_numccbs < AHA_CCB_MAX) {			ccb = (struct aha_ccb *) malloc(sizeof(struct aha_ccb),			    M_TEMP, M_NOWAIT);			if (!ccb) {				printf("%s: can't malloc ccb\n",				    sc->sc_dev.dv_xname);				goto out;			}			aha_init_ccb(sc, ccb);			sc->sc_numccbs++;			break;		}		if ((flags & SCSI_NOSLEEP) != 0)			goto out;		tsleep(&sc->sc_free_ccb, PRIBIO, "ahaccb", 0);	}	ccb->flags |= CCB_ALLOC;out:	splx(s);	return (ccb);}