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);