Lines Matching defs:xfer_ctx

99 typedef int usbhid_callback_t(struct usbhid_xfer_ctx *xfer_ctx);
154 struct usbhid_xfer_ctx *xfer_ctx = usbd_xfer_softc(xfer);
162 len = xfer_ctx->req.intr.maxlen;
165 xfer_ctx->error = 0;
169 usbd_copy_in(pc, 0, xfer_ctx->buf, len);
172 xfer_ctx->req.intr.maxlen = 0;
175 xfer_ctx->error = 0;
184 xfer_ctx->error = EIO;
186 (void)xfer_ctx->cb(xfer_ctx);
194 struct usbhid_xfer_ctx *xfer_ctx = usbd_xfer_softc(xfer);
204 usbd_copy_out(pc, 0, xfer_ctx->buf, actlen);
205 xfer_ctx->req.intr.actlen = actlen;
206 if (xfer_ctx->cb(xfer_ctx) != 0)
211 usbd_xfer_set_frame_len(xfer, 0, xfer_ctx->req.intr.maxlen);
228 struct usbhid_xfer_ctx *xfer_ctx = usbd_xfer_softc(xfer);
229 struct usb_device_request *req = &xfer_ctx->req.ctrl;
238 usbd_copy_in(pc, 0, xfer_ctx->buf, len);
253 usbd_copy_out(pc, sizeof(*req), xfer_ctx->buf, len);
255 xfer_ctx->error = 0;
261 xfer_ctx->error = EIO;
263 (void)xfer_ctx->cb(xfer_ctx);
269 usbhid_intr_handler_cb(struct usbhid_xfer_ctx *xfer_ctx)
271 struct usbhid_softc *sc = xfer_ctx->cb_ctx;
273 sc->sc_intr_handler(sc->sc_intr_ctx, xfer_ctx->buf,
274 xfer_ctx->req.intr.actlen);
280 usbhid_sync_wakeup_cb(struct usbhid_xfer_ctx *xfer_ctx)
284 wakeup(xfer_ctx->cb_ctx);
481 struct usbhid_xfer_ctx *xfer_ctx;
483 xfer_ctx = sc->sc_xfer_ctx + xfer_idx;
486 xfer_ctx = POLL_XFER(xfer_ctx);
490 ++xfer_ctx->waiters;
491 while (xfer_ctx->influx)
492 mtx_sleep(&xfer_ctx->waiters, &sc->sc_mtx, 0,
494 --xfer_ctx->waiters;
495 xfer_ctx->influx = true;
498 xfer_ctx->buf = buf;
499 xfer_ctx->req = *req;
500 xfer_ctx->error = ETIMEDOUT;
501 xfer_ctx->cb = &usbhid_sync_wakeup_cb;
502 xfer_ctx->cb_ctx = xfer_ctx;
507 while (timeout > 0 && xfer_ctx->error == ETIMEDOUT) {
513 msleep_sbt(xfer_ctx, &sc->sc_mtx, 0, "usbhid io",
517 if (USB_IN_POLLING_MODE_FUNC() || xfer_ctx->error != 0 ||
521 error = xfer_ctx->error;
523 *req = xfer_ctx->req;
526 xfer_ctx->influx = false;
527 if (xfer_ctx->waiters != 0)
528 wakeup_one(&xfer_ctx->waiters);