Changeset a46e56b in mainline for uspace/lib/usbvirt/src/ipc_dev.c
- Timestamp:
- 2018-03-22T06:49:35Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 77f0a1d
- Parents:
- 3e242d2
- git-author:
- Jakub Jermar <jakub@…> (2018-03-21 23:29:06)
- git-committer:
- Jakub Jermar <jakub@…> (2018-03-22 06:49:35)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/usbvirt/src/ipc_dev.c
r3e242d2 ra46e56b 49 49 */ 50 50 static void ipc_get_name(usbvirt_device_t *dev, 51 cap_call_handle_t i id, ipc_call_t *icall)51 cap_call_handle_t icall_handle, ipc_call_t *icall) 52 52 { 53 53 if (dev->name == NULL) { 54 async_answer_0(i id, ENOENT);54 async_answer_0(icall_handle, ENOENT); 55 55 } 56 56 57 57 size_t size = str_size(dev->name); 58 58 59 cap_call_handle_t c allid;59 cap_call_handle_t chandle; 60 60 size_t accepted_size; 61 if (!async_data_read_receive(&c allid, &accepted_size)) {62 async_answer_0(i id, EINVAL);61 if (!async_data_read_receive(&chandle, &accepted_size)) { 62 async_answer_0(icall_handle, EINVAL); 63 63 return; 64 64 } … … 67 67 accepted_size = size; 68 68 } 69 async_data_read_finalize(c allid, dev->name, accepted_size);70 71 async_answer_1(i id, EOK, accepted_size);69 async_data_read_finalize(chandle, dev->name, accepted_size); 70 71 async_answer_1(icall_handle, EOK, accepted_size); 72 72 } 73 73 … … 79 79 */ 80 80 static void ipc_control_read(usbvirt_device_t *dev, 81 cap_call_handle_t i id, ipc_call_t *icall)81 cap_call_handle_t icall_handle, ipc_call_t *icall) 82 82 { 83 83 errno_t rc; … … 90 90 1, 1024, 0, &setup_packet_len); 91 91 if (rc != EOK) { 92 async_answer_0(i id, rc);93 return; 94 } 95 96 cap_call_handle_t data_c allid;97 if (!async_data_read_receive(&data_c allid, &data_len)) {98 async_answer_0(i id, EPARTY);92 async_answer_0(icall_handle, rc); 93 return; 94 } 95 96 cap_call_handle_t data_chandle; 97 if (!async_data_read_receive(&data_chandle, &data_len)) { 98 async_answer_0(icall_handle, EPARTY); 99 99 free(setup_packet); 100 100 return; … … 103 103 void *buffer = malloc(data_len); 104 104 if (buffer == NULL) { 105 async_answer_0(i id, ENOMEM);105 async_answer_0(icall_handle, ENOMEM); 106 106 free(setup_packet); 107 107 return; … … 113 113 114 114 if (rc != EOK) { 115 async_answer_0(data_c allid, rc);116 async_answer_0(i id, rc);115 async_answer_0(data_chandle, rc); 116 async_answer_0(icall_handle, rc); 117 117 free(setup_packet); 118 118 free(buffer); … … 120 120 } 121 121 122 async_data_read_finalize(data_c allid, buffer, actual_len);123 async_answer_0(i id, EOK);122 async_data_read_finalize(data_chandle, buffer, actual_len); 123 async_answer_0(icall_handle, EOK); 124 124 125 125 free(setup_packet); … … 134 134 */ 135 135 static void ipc_control_write(usbvirt_device_t *dev, 136 cap_call_handle_t i id, ipc_call_t *icall)136 cap_call_handle_t icall_handle, ipc_call_t *icall) 137 137 { 138 138 size_t data_buffer_len = IPC_GET_ARG1(*icall); … … 146 146 1, 0, 0, &setup_packet_len); 147 147 if (rc != EOK) { 148 async_answer_0(i id, rc);148 async_answer_0(icall_handle, rc); 149 149 return; 150 150 } … … 154 154 1, 0, 0, &data_buffer_len); 155 155 if (rc != EOK) { 156 async_answer_0(i id, rc);156 async_answer_0(icall_handle, rc); 157 157 free(setup_packet); 158 158 return; … … 163 163 data_buffer, data_buffer_len); 164 164 165 async_answer_0(i id, rc);165 async_answer_0(icall_handle, rc); 166 166 167 167 free(setup_packet); … … 179 179 static void ipc_data_in(usbvirt_device_t *dev, 180 180 usb_transfer_type_t transfer_type, 181 cap_call_handle_t i id, ipc_call_t *icall)181 cap_call_handle_t icall_handle, ipc_call_t *icall) 182 182 { 183 183 usb_endpoint_t endpoint = IPC_GET_ARG1(*icall); … … 186 186 187 187 size_t data_len = 0; 188 cap_call_handle_t data_c allid;189 if (!async_data_read_receive(&data_c allid, &data_len)) {190 async_answer_0(i id, EPARTY);188 cap_call_handle_t data_chandle; 189 if (!async_data_read_receive(&data_chandle, &data_len)) { 190 async_answer_0(icall_handle, EPARTY); 191 191 return; 192 192 } … … 194 194 void *buffer = malloc(data_len); 195 195 if (buffer == NULL) { 196 async_answer_0(i id, ENOMEM);196 async_answer_0(icall_handle, ENOMEM); 197 197 return; 198 198 } … … 203 203 204 204 if (rc != EOK) { 205 async_answer_0(data_c allid, rc);206 async_answer_0(i id, rc);205 async_answer_0(data_chandle, rc); 206 async_answer_0(icall_handle, rc); 207 207 free(buffer); 208 208 return; 209 209 } 210 210 211 async_data_read_finalize(data_c allid, buffer, actual_len);212 async_answer_0(i id, EOK);211 async_data_read_finalize(data_chandle, buffer, actual_len); 212 async_answer_0(icall_handle, EOK); 213 213 214 214 free(buffer); … … 223 223 static void ipc_data_out(usbvirt_device_t *dev, 224 224 usb_transfer_type_t transfer_type, 225 cap_call_handle_t i id, ipc_call_t *icall)225 cap_call_handle_t icall_handle, ipc_call_t *icall) 226 226 { 227 227 usb_endpoint_t endpoint = IPC_GET_ARG1(*icall); … … 233 233 1, 0, 0, &data_buffer_size); 234 234 if (rc != EOK) { 235 async_answer_0(i id, rc);235 async_answer_0(icall_handle, rc); 236 236 return; 237 237 } … … 240 240 data_buffer, data_buffer_size); 241 241 242 async_answer_0(i id, rc);242 async_answer_0(icall_handle, rc); 243 243 244 244 free(data_buffer); … … 248 248 * 249 249 * @param dev Target USB device. 250 * @param c allidCaller id.250 * @param chandle Caller id. 251 251 * @param call Incoming call. 252 252 * @return Whether the call was handled. 253 253 */ 254 254 bool usbvirt_ipc_handle_call(usbvirt_device_t *dev, 255 cap_call_handle_t c allid, ipc_call_t *call)255 cap_call_handle_t chandle, ipc_call_t *call) 256 256 { 257 257 switch (IPC_GET_IMETHOD(*call)) { 258 258 case IPC_M_USBVIRT_GET_NAME: 259 ipc_get_name(dev, c allid, call);259 ipc_get_name(dev, chandle, call); 260 260 break; 261 261 262 262 case IPC_M_USBVIRT_CONTROL_READ: 263 ipc_control_read(dev, c allid, call);263 ipc_control_read(dev, chandle, call); 264 264 break; 265 265 266 266 case IPC_M_USBVIRT_CONTROL_WRITE: 267 ipc_control_write(dev, c allid, call);267 ipc_control_write(dev, chandle, call); 268 268 break; 269 269 270 270 case IPC_M_USBVIRT_INTERRUPT_IN: 271 ipc_data_in(dev, USB_TRANSFER_INTERRUPT, c allid, call);271 ipc_data_in(dev, USB_TRANSFER_INTERRUPT, chandle, call); 272 272 break; 273 273 274 274 case IPC_M_USBVIRT_BULK_IN: 275 ipc_data_in(dev, USB_TRANSFER_BULK, c allid, call);275 ipc_data_in(dev, USB_TRANSFER_BULK, chandle, call); 276 276 break; 277 277 278 278 case IPC_M_USBVIRT_INTERRUPT_OUT: 279 ipc_data_out(dev, USB_TRANSFER_INTERRUPT, c allid, call);279 ipc_data_out(dev, USB_TRANSFER_INTERRUPT, chandle, call); 280 280 break; 281 281 282 282 case IPC_M_USBVIRT_BULK_OUT: 283 ipc_data_out(dev, USB_TRANSFER_BULK, c allid, call);283 ipc_data_out(dev, USB_TRANSFER_BULK, chandle, call); 284 284 break; 285 285
Note:
See TracChangeset
for help on using the changeset viewer.