wi 2119 dev/ic/wdc.c struct wdc_ioctl *wi; wi 2122 dev/ic/wdc.c wi = malloc(sizeof(struct wdc_ioctl), M_TEMP, M_WAITOK); wi 2123 dev/ic/wdc.c bzero(wi, sizeof (struct wdc_ioctl)); wi 2125 dev/ic/wdc.c LIST_INSERT_HEAD(&wi_head, wi, wi_list); wi 2127 dev/ic/wdc.c return (wi); wi 2135 dev/ic/wdc.c wdc_ioctl_free(wi) wi 2136 dev/ic/wdc.c struct wdc_ioctl *wi; wi 2141 dev/ic/wdc.c LIST_REMOVE(wi, wi_list); wi 2143 dev/ic/wdc.c free(wi, M_TEMP); wi 2154 dev/ic/wdc.c struct wdc_ioctl *wi; wi 2158 dev/ic/wdc.c LIST_FOREACH(wi, &wi_head, wi_list) wi 2159 dev/ic/wdc.c if (bp == &wi->wi_bp) wi 2162 dev/ic/wdc.c return (wi); wi 2191 dev/ic/wdc.c struct wdc_ioctl *wi; wi 2196 dev/ic/wdc.c wi = wdc_ioctl_find(bp); wi 2197 dev/ic/wdc.c if (wi == NULL) { wi 2209 dev/ic/wdc.c if ((u_long)bp->b_bcount != wi->wi_atareq.datalen) { wi 2219 dev/ic/wdc.c if (wi->wi_atareq.timeout == 0) { wi 2224 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READ) wi 2226 dev/ic/wdc.c else if (wi->wi_atareq.flags & ATACMD_WRITE) wi 2229 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READREG) wi 2234 dev/ic/wdc.c wdc_c.timeout = wi->wi_atareq.timeout; wi 2235 dev/ic/wdc.c wdc_c.r_command = wi->wi_atareq.command; wi 2236 dev/ic/wdc.c wdc_c.r_head = wi->wi_atareq.head & 0x0f; wi 2237 dev/ic/wdc.c wdc_c.r_cyl = wi->wi_atareq.cylinder; wi 2238 dev/ic/wdc.c wdc_c.r_sector = wi->wi_atareq.sec_num; wi 2239 dev/ic/wdc.c wdc_c.r_count = wi->wi_atareq.sec_count; wi 2240 dev/ic/wdc.c wdc_c.r_precomp = wi->wi_atareq.features; wi 2241 dev/ic/wdc.c if (wi->wi_drvp->drive_flags & DRIVE_ATAPI) { wi 2250 dev/ic/wdc.c wdc_c.data = wi->wi_bp.b_data; wi 2251 dev/ic/wdc.c wdc_c.bcount = wi->wi_bp.b_bcount; wi 2253 dev/ic/wdc.c if (wdc_exec_command(wi->wi_drvp, &wdc_c) != WDC_COMPLETE) { wi 2254 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_ERROR; wi 2260 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_ERROR; wi 2261 dev/ic/wdc.c wi->wi_atareq.error = wdc_c.r_error; wi 2263 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_DF; wi 2265 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_TIMEOUT; wi 2267 dev/ic/wdc.c wi->wi_atareq.retsts = ATACMD_OK; wi 2268 dev/ic/wdc.c if (wi->wi_atareq.flags & ATACMD_READREG) { wi 2269 dev/ic/wdc.c wi->wi_atareq.head = wdc_c.r_head ; wi 2270 dev/ic/wdc.c wi->wi_atareq.cylinder = wdc_c.r_cyl; wi 2271 dev/ic/wdc.c wi->wi_atareq.sec_num = wdc_c.r_sector; wi 2272 dev/ic/wdc.c wi->wi_atareq.sec_count = wdc_c.r_count; wi 2273 dev/ic/wdc.c wi->wi_atareq.features = wdc_c.r_precomp; wi 2274 dev/ic/wdc.c wi->wi_atareq.error = wdc_c.r_error; wi 2333 dev/ic/wdc.c struct wdc_ioctl *wi; wi 2336 dev/ic/wdc.c wi = wdc_ioctl_get(); wi 2337 dev/ic/wdc.c wi->wi_drvp = drvp; wi 2338 dev/ic/wdc.c wi->wi_atareq = *atareq; wi 2342 dev/ic/wdc.c wi->wi_iov.iov_base = atareq->databuf; wi 2343 dev/ic/wdc.c wi->wi_iov.iov_len = atareq->datalen; wi 2344 dev/ic/wdc.c wi->wi_uio.uio_iov = &wi->wi_iov; wi 2345 dev/ic/wdc.c wi->wi_uio.uio_iovcnt = 1; wi 2346 dev/ic/wdc.c wi->wi_uio.uio_resid = atareq->datalen; wi 2347 dev/ic/wdc.c wi->wi_uio.uio_offset = 0; wi 2348 dev/ic/wdc.c wi->wi_uio.uio_segflg = UIO_USERSPACE; wi 2349 dev/ic/wdc.c wi->wi_uio.uio_rw = wi 2351 dev/ic/wdc.c wi->wi_uio.uio_procp = curproc; wi 2352 dev/ic/wdc.c error = physio(wdc_ioctl_strategy, &wi->wi_bp, 0, wi 2354 dev/ic/wdc.c minphys, &wi->wi_uio); wi 2358 dev/ic/wdc.c wi->wi_bp.b_flags = 0; wi 2359 dev/ic/wdc.c wi->wi_bp.b_data = 0; wi 2360 dev/ic/wdc.c wi->wi_bp.b_bcount = 0; wi 2361 dev/ic/wdc.c wi->wi_bp.b_dev = 0; wi 2362 dev/ic/wdc.c wi->wi_bp.b_proc = curproc; wi 2363 dev/ic/wdc.c LIST_INIT(&wi->wi_bp.b_dep); wi 2364 dev/ic/wdc.c wdc_ioctl_strategy(&wi->wi_bp); wi 2365 dev/ic/wdc.c error = wi->wi_bp.b_error; wi 2367 dev/ic/wdc.c *atareq = wi->wi_atareq; wi 2368 dev/ic/wdc.c wdc_ioctl_free(wi);