Lines Matching defs:xio
85 #include <sun3/dev/xio.h>
859 struct xd_iocmd *xio;
928 xio = (struct xd_iocmd *)addr;
929 req = xd_getkauthreq(xio->cmd);
931 dev, req, xio)) != 0)
933 return xdc_ioctlcmd(xd, dev, xio);
2139 xdc_ioctlcmd(struct xd_softc *xd, dev_t dev, struct xd_iocmd *xio)
2147 switch (xio->cmd) {
2150 if (xio->subfn || xio->dptr || xio->dlen ||
2151 xio->block || xio->sectcnt)
2157 if (xio->subfn || xio->sectcnt > XD_IOCMD_MAXS ||
2158 xio->sectcnt * XDFM_BPS != xio->dlen || xio->dptr == NULL)
2171 if (xio->subfn != XDFUN_DRV ||
2172 xio->dlen || xio->block || xio->dptr)
2175 xio->sectcnt = xd->hw_spt; /* we already know the answer */
2182 switch (xio->subfn) {
2185 if (xio->sectcnt != xd->hw_spt ||
2186 (xio->block % xd->nsect) != 0 ||
2187 xio->dlen != XD_IOCMD_HSZ * xd->hw_spt ||
2188 xio->dptr == NULL)
2190 xio->sectcnt = 0;
2194 if (xio->cmd == XDCMD_XRD)
2196 if (xio->sectcnt || xio->dlen ||
2197 (xio->block % xd->nsect) != 0 || xio->dptr)
2206 if (xio->sectcnt || xio->dlen != XD_IOCMD_DMSZ ||
2207 (xio->block % xd->nsect) != 0 || xio->dptr == NULL)
2225 if (xio->dlen) {
2226 dvmabuf = dvma_malloc(xio->dlen);
2227 if (xio->cmd == XDCMD_WR || xio->cmd == XDCMD_XWR) {
2228 err = copyin(xio->dptr, dvmabuf, xio->dlen);
2230 dvma_free(dvmabuf, xio->dlen);
2240 rqno = xdc_cmd(xdcsc, xio->cmd, xio->subfn, xd->xd_drive, xio->block,
2241 xio->sectcnt, dvmabuf, XD_SUB_WAIT);
2246 xio->errno = xdcsc->reqs[rqno].errno;
2247 xio->tries = xdcsc->reqs[rqno].tries;
2250 if (xio->cmd == XDCMD_RD || xio->cmd == XDCMD_XRD)
2251 err = copyout(dvmabuf, xio->dptr, xio->dlen);
2256 dvma_free(dvmabuf, xio->dlen);