Lines Matching defs:xsh
102 /* ioh/xsh queue state */
504 * public interface to the xsh api.
508 scsi_xsh_set(struct scsi_xshandler *xsh, struct scsi_link *link,
511 scsi_ioh_set(&xsh->ioh, link->pool, scsi_xsh_ioh, xsh);
513 xsh->link = link;
514 xsh->handler = handler;
518 scsi_xsh_add(struct scsi_xshandler *xsh)
520 struct scsi_link *link = xsh->link;
527 if (xsh->ioh.q_state == RUNQ_IDLE) {
528 TAILQ_INSERT_TAIL(&link->queue, &xsh->ioh, q_entry);
529 xsh->ioh.q_state = RUNQ_LINKQ;
541 scsi_xsh_del(struct scsi_xshandler *xsh)
543 struct scsi_link *link = xsh->link;
547 switch (xsh->ioh.q_state) {
552 TAILQ_REMOVE(&link->queue, &xsh->ioh, q_entry);
555 TAILQ_REMOVE(&link->pool->queue, &xsh->ioh, q_entry);
561 panic("unexpected xsh state %u", xsh->ioh.q_state);
563 xsh->ioh.q_state = RUNQ_IDLE;
606 struct scsi_xshandler *xsh = cookie;
609 xs = scsi_xs_io(xsh->link, io, SCSI_NOSLEEP);
618 scsi_xsh_add(xsh);
622 xsh->handler(xs);
633 struct scsi_xshandler xsh;
642 scsi_ioh_set(&xsh.ioh, iopl, scsi_xs_get_done, &m);
643 xsh.link = link;
649 scsi_xsh_add(&xsh);
661 scsi_ioh_add(&xsh.ioh);
684 struct scsi_xshandler *xsh;
701 xsh = (struct scsi_xshandler *)ioh;
705 if (xsh->ioh.handler == scsi_xsh_ioh &&
706 xsh->link == link)
710 if (xsh->ioh.handler == scsi_xs_get_done &&
711 xsh->link == link) {
712 TAILQ_REMOVE(&iopl->queue, &xsh->ioh, q_entry);
713 xsh->ioh.q_state = RUNQ_IDLE;
716 TAILQ_INSERT_TAIL(&sleepers, &xsh->ioh, q_entry);