Lines Matching defs:ioctl_cmd

37 	ips_ioctl_t *ioctl_cmd = command->arg;
38 if(ioctl_cmd->readwrite & IPS_IOCTL_READ){
39 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap,
41 } else if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){
42 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap,
47 bus_dmamap_unload(ioctl_cmd->dmatag, ioctl_cmd->dmamap);
48 ioctl_cmd->status.value = command->status.value;
55 ips_ioctl_t *ioctl_cmd = command->arg;
63 if(ioctl_cmd->readwrite & IPS_IOCTL_WRITE){
64 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap,
66 } else if(ioctl_cmd->readwrite & IPS_IOCTL_READ){
67 bus_dmamap_sync(ioctl_cmd->dmatag, ioctl_cmd->dmamap,
76 ips_ioctl_t *ioctl_cmd = command->arg;
77 memcpy(command->command_buffer, ioctl_cmd->command_buffer,
80 bus_dmamap_load(ioctl_cmd->dmatag, ioctl_cmd->dmamap,
81 ioctl_cmd->data_buffer,ioctl_cmd->datasize,
86 static int ips_ioctl_cmd(ips_softc_t *sc, ips_ioctl_t *ioctl_cmd, ips_user_request *user_request)
98 /* maxsize */ ioctl_cmd->datasize,
100 /* maxsegsize*/ ioctl_cmd->datasize,
104 &ioctl_cmd->dmatag) != 0) {
107 if(bus_dmamem_alloc(ioctl_cmd->dmatag, &ioctl_cmd->data_buffer,
108 0, &ioctl_cmd->dmamap)){
112 if(copyin(user_request->data_buffer,ioctl_cmd->data_buffer,
113 ioctl_cmd->datasize))
115 ioctl_cmd->status.value = 0xffffffff;
122 command->arg = ioctl_cmd;
124 while( ioctl_cmd->status.value == 0xffffffff)
125 msleep(ioctl_cmd, &sc->queue_mtx, 0, "ips", hz/10);
126 if(COMMAND_ERROR(ioctl_cmd))
131 if(copyout(ioctl_cmd->data_buffer, user_request->data_buffer,
132 ioctl_cmd->datasize))
138 exit: bus_dmamem_free(ioctl_cmd->dmatag, ioctl_cmd->data_buffer,
139 ioctl_cmd->dmamap);
140 bus_dma_tag_destroy(ioctl_cmd->dmatag);
147 ips_ioctl_t *ioctl_cmd;
152 ioctl_cmd = malloc(sizeof(ips_ioctl_t), M_IPSBUF, M_WAITOK);
153 ioctl_cmd->command_buffer = malloc(sizeof(ips_generic_cmd),
156 ioctl_cmd->command_buffer, sizeof(ips_generic_cmd))){
157 free(ioctl_cmd->command_buffer, M_IPSBUF);
158 free(ioctl_cmd, M_IPSBUF);
161 ioctl_cmd->readwrite = IPS_IOCTL_READ | IPS_IOCTL_WRITE;
162 ioctl_cmd->datasize = IPS_IOCTL_BUFFER_SIZE;
163 error = ips_ioctl_cmd(sc, ioctl_cmd, user_request);
164 free(ioctl_cmd->command_buffer, M_IPSBUF);
165 free(ioctl_cmd, M_IPSBUF);