Changeset 984a9ba in mainline for uspace/lib/drv/generic
- Timestamp:
- 2018-07-05T09:34:09Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 63d46341
- Parents:
- 76f566d
- Location:
- uspace/lib/drv/generic
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
r76f566d r984a9ba 118 118 } 119 119 120 static void driver_dev_add( cap_call_handle_t icall_handle,ipc_call_t *icall)120 static void driver_dev_add(ipc_call_t *icall) 121 121 { 122 122 devman_handle_t dev_handle = IPC_GET_ARG1(*icall); … … 126 126 errno_t rc = async_data_write_accept((void **) &dev_name, true, 0, 0, 0, 0); 127 127 if (rc != EOK) { 128 async_answer_0(icall _handle, rc);128 async_answer_0(icall, rc); 129 129 return; 130 130 } … … 134 134 if (stopping) { 135 135 fibril_rwlock_read_unlock(&stopping_lock); 136 async_answer_0(icall _handle, EIO);136 async_answer_0(icall, EIO); 137 137 return; 138 138 } … … 142 142 fibril_rwlock_read_unlock(&stopping_lock); 143 143 free(dev_name); 144 async_answer_0(icall _handle, ENOMEM);144 async_answer_0(icall, ENOMEM); 145 145 return; 146 146 } … … 162 162 fibril_rwlock_read_unlock(&stopping_lock); 163 163 dev_del_ref(dev); 164 async_answer_0(icall _handle, res);164 async_answer_0(icall, res); 165 165 return; 166 166 } … … 171 171 fibril_rwlock_read_unlock(&stopping_lock); 172 172 173 async_answer_0(icall _handle, res);174 } 175 176 static void driver_dev_remove( cap_call_handle_t icall_handle,ipc_call_t *icall)173 async_answer_0(icall, res); 174 } 175 176 static void driver_dev_remove(ipc_call_t *icall) 177 177 { 178 178 devman_handle_t devh = IPC_GET_ARG1(*icall); … … 185 185 186 186 if (dev == NULL) { 187 async_answer_0(icall _handle, ENOENT);187 async_answer_0(icall, ENOENT); 188 188 return; 189 189 } … … 204 204 205 205 dev_del_ref(dev); 206 async_answer_0(icall _handle, rc);207 } 208 209 static void driver_dev_gone( cap_call_handle_t icall_handle,ipc_call_t *icall)206 async_answer_0(icall, rc); 207 } 208 209 static void driver_dev_gone(ipc_call_t *icall) 210 210 { 211 211 devman_handle_t devh = IPC_GET_ARG1(*icall); … … 218 218 219 219 if (dev == NULL) { 220 async_answer_0(icall _handle, ENOENT);220 async_answer_0(icall, ENOENT); 221 221 return; 222 222 } … … 237 237 238 238 dev_del_ref(dev); 239 async_answer_0(icall _handle, rc);240 } 241 242 static void driver_fun_online( cap_call_handle_t icall_handle,ipc_call_t *icall)239 async_answer_0(icall, rc); 240 } 241 242 static void driver_fun_online(ipc_call_t *icall) 243 243 { 244 244 devman_handle_t funh = IPC_GET_ARG1(*icall); … … 258 258 259 259 if (fun == NULL) { 260 async_answer_0(icall _handle, ENOENT);260 async_answer_0(icall, ENOENT); 261 261 return; 262 262 } … … 272 272 fun_del_ref(fun); 273 273 274 async_answer_0(icall _handle, rc);275 } 276 277 static void driver_fun_offline( cap_call_handle_t icall_handle,ipc_call_t *icall)274 async_answer_0(icall, rc); 275 } 276 277 static void driver_fun_offline(ipc_call_t *icall) 278 278 { 279 279 devman_handle_t funh = IPC_GET_ARG1(*icall); … … 293 293 294 294 if (fun == NULL) { 295 async_answer_0(icall _handle, ENOENT);295 async_answer_0(icall, ENOENT); 296 296 return; 297 297 } … … 305 305 rc = ENOTSUP; 306 306 307 async_answer_0(icall _handle, rc);308 } 309 310 static void driver_stop( cap_call_handle_t icall_handle,ipc_call_t *icall)307 async_answer_0(icall, rc); 308 } 309 310 static void driver_stop(ipc_call_t *icall) 311 311 { 312 312 /* Prevent new devices from being added */ … … 321 321 stopping = false; 322 322 fibril_rwlock_write_unlock(&stopping_lock); 323 async_answer_0(icall _handle, EBUSY);323 async_answer_0(icall, EBUSY); 324 324 return; 325 325 } … … 333 333 334 334 /* Reply with success and terminate */ 335 async_answer_0(icall _handle, EOK);335 async_answer_0(icall, EOK); 336 336 exit(0); 337 337 } 338 338 339 static void driver_connection_devman(cap_call_handle_t icall_handle, ipc_call_t *icall, 340 void *arg) 339 static void driver_connection_devman(ipc_call_t *icall, void *arg) 341 340 { 342 341 /* Accept connection */ 343 async_answer_0(icall _handle, EOK);342 async_answer_0(icall, EOK); 344 343 345 344 while (true) { 346 345 ipc_call_t call; 347 cap_call_handle_t chandle =async_get_call(&call);346 async_get_call(&call); 348 347 349 348 if (!IPC_GET_IMETHOD(call)) … … 352 351 switch (IPC_GET_IMETHOD(call)) { 353 352 case DRIVER_DEV_ADD: 354 driver_dev_add( chandle,&call);353 driver_dev_add(&call); 355 354 break; 356 355 case DRIVER_DEV_REMOVE: 357 driver_dev_remove( chandle,&call);356 driver_dev_remove(&call); 358 357 break; 359 358 case DRIVER_DEV_GONE: 360 driver_dev_gone( chandle,&call);359 driver_dev_gone(&call); 361 360 break; 362 361 case DRIVER_FUN_ONLINE: 363 driver_fun_online( chandle,&call);362 driver_fun_online(&call); 364 363 break; 365 364 case DRIVER_FUN_OFFLINE: 366 driver_fun_offline( chandle,&call);365 driver_fun_offline(&call); 367 366 break; 368 367 case DRIVER_STOP: 369 driver_stop( chandle,&call);368 driver_stop(&call); 370 369 break; 371 370 default: 372 async_answer_0( chandle, ENOTSUP);371 async_answer_0(&call, ENOTSUP); 373 372 } 374 373 } … … 381 380 * 382 381 */ 383 static void driver_connection_gen( cap_call_handle_t icall_handle,ipc_call_t *icall, bool drv)382 static void driver_connection_gen(ipc_call_t *icall, bool drv) 384 383 { 385 384 /* … … 398 397 printf("%s: driver_connection_gen error - no function with handle" 399 398 " %" PRIun " was found.\n", driver->name, handle); 400 async_answer_0(icall _handle, ENOENT);399 async_answer_0(icall, ENOENT); 401 400 return; 402 401 } … … 404 403 if (fun->conn_handler != NULL) { 405 404 /* Driver has a custom connection handler. */ 406 (*fun->conn_handler)(icall _handle, icall, (void *)fun);405 (*fun->conn_handler)(icall, (void *)fun); 407 406 fun_del_ref(fun); 408 407 return; … … 419 418 ret = (*fun->ops->open)(fun); 420 419 421 async_answer_0(icall _handle, ret);420 async_answer_0(icall, ret); 422 421 if (ret != EOK) { 423 422 fun_del_ref(fun); … … 426 425 427 426 while (true) { 428 cap_call_handle_t chandle;429 427 ipc_call_t call; 430 chandle = async_get_call(&call); 428 async_get_call(&call); 429 431 430 sysarg_t method = IPC_GET_IMETHOD(call); 432 431 … … 435 434 if (fun->ops != NULL && fun->ops->close != NULL) 436 435 (*fun->ops->close)(fun); 437 async_answer_0( chandle, EOK);436 async_answer_0(&call, EOK); 438 437 fun_del_ref(fun); 439 438 return; … … 448 447 function_get_default_handler(fun); 449 448 if (default_handler != NULL) { 450 (*default_handler)(fun, chandle,&call);449 (*default_handler)(fun, &call); 451 450 continue; 452 451 } … … 459 458 "invalid interface id %d.", 460 459 driver->name, iface_idx); 461 async_answer_0( chandle, ENOTSUP);460 async_answer_0(&call, ENOTSUP); 462 461 continue; 463 462 } … … 471 470 printf("Function with handle %" PRIun " has no interface " 472 471 "with id %d.\n", handle, iface_idx); 473 async_answer_0( chandle, ENOTSUP);472 async_answer_0(&call, ENOTSUP); 474 473 continue; 475 474 } … … 490 489 printf("%s: driver_connection_gen error - " 491 490 "invalid interface method.", driver->name); 492 async_answer_0( chandle, ENOTSUP);491 async_answer_0(&call, ENOTSUP); 493 492 continue; 494 493 } … … 500 499 * associated with the function by its driver. 501 500 */ 502 (*iface_method_ptr)(fun, ops, chandle, &call); 503 } 504 } 505 506 static void driver_connection_driver(cap_call_handle_t icall_handle, ipc_call_t *icall, 507 void *arg) 508 { 509 driver_connection_gen(icall_handle, icall, true); 510 } 511 512 static void driver_connection_client(cap_call_handle_t icall_handle, ipc_call_t *icall, 513 void *arg) 514 { 515 driver_connection_gen(icall_handle, icall, false); 501 (*iface_method_ptr)(fun, ops, &call); 502 } 503 } 504 505 static void driver_connection_driver(ipc_call_t *icall, void *arg) 506 { 507 driver_connection_gen(icall, true); 508 } 509 510 static void driver_connection_client(ipc_call_t *icall, void *arg) 511 { 512 driver_connection_gen(icall, false); 516 513 } 517 514 -
uspace/lib/drv/generic/remote_ahci.c
r76f566d r984a9ba 182 182 } 183 183 184 static void remote_ahci_get_sata_device_name(ddf_fun_t *, void *, cap_call_handle_t, 185 ipc_call_t *); 186 static void remote_ahci_get_num_blocks(ddf_fun_t *, void *, cap_call_handle_t, 187 ipc_call_t *); 188 static void remote_ahci_get_block_size(ddf_fun_t *, void *, cap_call_handle_t, 189 ipc_call_t *); 190 static void remote_ahci_read_blocks(ddf_fun_t *, void *, cap_call_handle_t, 191 ipc_call_t *); 192 static void remote_ahci_write_blocks(ddf_fun_t *, void *, cap_call_handle_t, 193 ipc_call_t *); 184 static void remote_ahci_get_sata_device_name(ddf_fun_t *, void *, ipc_call_t *); 185 static void remote_ahci_get_num_blocks(ddf_fun_t *, void *, ipc_call_t *); 186 static void remote_ahci_get_block_size(ddf_fun_t *, void *, ipc_call_t *); 187 static void remote_ahci_read_blocks(ddf_fun_t *, void *, ipc_call_t *); 188 static void remote_ahci_write_blocks(ddf_fun_t *, void *, ipc_call_t *); 194 189 195 190 /** Remote AHCI interface operations. */ … … 210 205 211 206 void remote_ahci_get_sata_device_name(ddf_fun_t *fun, void *iface, 212 cap_call_handle_t chandle,ipc_call_t *call)207 ipc_call_t *call) 213 208 { 214 209 const ahci_iface_t *ahci_iface = (ahci_iface_t *) iface; 215 210 216 211 if (ahci_iface->get_sata_device_name == NULL) { 217 async_answer_0(c handle, ENOTSUP);212 async_answer_0(call, ENOTSUP); 218 213 return; 219 214 } … … 224 219 char *sata_dev_name = malloc(sata_dev_name_length); 225 220 if (sata_dev_name == NULL) { 226 async_answer_0(c handle, ENOMEM);221 async_answer_0(call, ENOMEM); 227 222 return; 228 223 } … … 231 226 sata_dev_name_length, sata_dev_name); 232 227 228 ipc_call_t data; 233 229 size_t real_size; 234 cap_call_handle_t call_handle; 235 if ((async_data_read_receive(&call_handle, &real_size)) && 230 if ((async_data_read_receive(&data, &real_size)) && 236 231 (real_size == sata_dev_name_length)) 237 async_data_read_finalize( call_handle, sata_dev_name,232 async_data_read_finalize(&data, sata_dev_name, 238 233 sata_dev_name_length); 239 234 240 235 free(sata_dev_name); 241 async_answer_0(c handle, ret);236 async_answer_0(call, ret); 242 237 } 243 238 244 239 static void remote_ahci_get_num_blocks(ddf_fun_t *fun, void *iface, 245 cap_call_handle_t chandle,ipc_call_t *call)240 ipc_call_t *call) 246 241 { 247 242 const ahci_iface_t *ahci_iface = (ahci_iface_t *) iface; 248 243 249 244 if (ahci_iface->get_num_blocks == NULL) { 250 async_answer_0(c handle, ENOTSUP);245 async_answer_0(call, ENOTSUP); 251 246 return; 252 247 } … … 256 251 257 252 if (ret != EOK) 258 async_answer_0(c handle, ret);253 async_answer_0(call, ret); 259 254 else 260 async_answer_2(c handle, EOK, HI(blocks), LO(blocks));255 async_answer_2(call, EOK, HI(blocks), LO(blocks)); 261 256 } 262 257 263 258 static void remote_ahci_get_block_size(ddf_fun_t *fun, void *iface, 264 cap_call_handle_t chandle,ipc_call_t *call)259 ipc_call_t *call) 265 260 { 266 261 const ahci_iface_t *ahci_iface = (ahci_iface_t *) iface; 267 262 268 263 if (ahci_iface->get_block_size == NULL) { 269 async_answer_0(c handle, ENOTSUP);264 async_answer_0(call, ENOTSUP); 270 265 return; 271 266 } … … 275 270 276 271 if (ret != EOK) 277 async_answer_0(c handle, ret);272 async_answer_0(call, ret); 278 273 else 279 async_answer_1(chandle, EOK, blocks); 280 } 281 282 void remote_ahci_read_blocks(ddf_fun_t *fun, void *iface, 283 cap_call_handle_t chandle, ipc_call_t *call) 274 async_answer_1(call, EOK, blocks); 275 } 276 277 void remote_ahci_read_blocks(ddf_fun_t *fun, void *iface, ipc_call_t *call) 284 278 { 285 279 const ahci_iface_t *ahci_iface = (ahci_iface_t *) iface; 286 280 287 281 if (ahci_iface->read_blocks == NULL) { 288 async_answer_0(chandle, ENOTSUP); 289 return; 290 } 291 282 async_answer_0(call, ENOTSUP); 283 return; 284 } 285 286 ipc_call_t data; 292 287 size_t maxblock_size; 293 288 unsigned int flags; 294 295 cap_call_handle_t call_handle; 296 async_share_out_receive(&call_handle, &maxblock_size, &flags); 289 async_share_out_receive(&data, &maxblock_size, &flags); 297 290 298 291 void *buf; 299 async_share_out_finalize( call_handle, &buf);292 async_share_out_finalize(&data, &buf); 300 293 301 294 const uint64_t blocknum = … … 306 299 const errno_t ret = ahci_iface->read_blocks(fun, blocknum, cnt, buf); 307 300 308 async_answer_0(chandle, ret); 309 } 310 311 void remote_ahci_write_blocks(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle, 312 ipc_call_t *call) 301 async_answer_0(call, ret); 302 } 303 304 void remote_ahci_write_blocks(ddf_fun_t *fun, void *iface, ipc_call_t *call) 313 305 { 314 306 const ahci_iface_t *ahci_iface = (ahci_iface_t *) iface; 315 307 316 308 if (ahci_iface->read_blocks == NULL) { 317 async_answer_0(chandle, ENOTSUP); 318 return; 319 } 320 309 async_answer_0(call, ENOTSUP); 310 return; 311 } 312 313 ipc_call_t data; 321 314 size_t maxblock_size; 322 315 unsigned int flags; 323 324 cap_call_handle_t call_handle; 325 async_share_out_receive(&call_handle, &maxblock_size, &flags); 316 async_share_out_receive(&data, &maxblock_size, &flags); 326 317 327 318 void *buf; 328 async_share_out_finalize( call_handle, &buf);319 async_share_out_finalize(&data, &buf); 329 320 330 321 const uint64_t blocknum = … … 335 326 const errno_t ret = ahci_iface->write_blocks(fun, blocknum, cnt, buf); 336 327 337 async_answer_0(c handle, ret);328 async_answer_0(call, ret); 338 329 } 339 330 -
uspace/lib/drv/generic/remote_audio_mixer.c
r76f566d r984a9ba 203 203 * SERVER SIDE 204 204 */ 205 static void remote_audio_mixer_get_info(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);206 static void remote_audio_mixer_get_item_info(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);207 static void remote_audio_mixer_get_item_level(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);208 static void remote_audio_mixer_set_item_level(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);205 static void remote_audio_mixer_get_info(ddf_fun_t *, void *, ipc_call_t *); 206 static void remote_audio_mixer_get_item_info(ddf_fun_t *, void *, ipc_call_t *); 207 static void remote_audio_mixer_get_item_level(ddf_fun_t *, void *, ipc_call_t *); 208 static void remote_audio_mixer_set_item_level(ddf_fun_t *, void *, ipc_call_t *); 209 209 210 210 /** Remote audio mixer interface operations. */ … … 222 222 }; 223 223 224 void remote_audio_mixer_get_info( 225 ddf_fun_t *fun, void *iface, cap_call_handle_t chandle, ipc_call_t *call) 224 void remote_audio_mixer_get_info(ddf_fun_t *fun, void *iface, ipc_call_t *icall) 226 225 { 227 226 audio_mixer_iface_t *mixer_iface = iface; 228 227 229 228 if (!mixer_iface->get_info) { 230 async_answer_0( chandle, ENOTSUP);229 async_answer_0(icall, ENOTSUP); 231 230 return; 232 231 } 232 233 233 const char *name = NULL; 234 234 unsigned items = 0; 235 235 const errno_t ret = mixer_iface->get_info(fun, &name, &items); 236 236 const size_t name_size = name ? str_size(name) + 1 : 0; 237 async_answer_2(chandle, ret, name_size, items); 237 async_answer_2(icall, ret, name_size, items); 238 238 239 /* Send the name. */ 239 240 if (ret == EOK && name_size > 0) { 241 ipc_call_t call; 240 242 size_t size; 241 cap_call_handle_t name_id; 242 if (!async_data_read_receive(&name_id, &size)) { 243 async_answer_0(name_id, EPARTY); 243 if (!async_data_read_receive(&call, &size)) { 244 async_answer_0(&call, EPARTY); 244 245 return; 245 246 } 247 246 248 if (size != name_size) { 247 async_answer_0( name_id, ELIMIT);249 async_answer_0(&call, ELIMIT); 248 250 return; 249 251 } 250 async_data_read_finalize(name_id, name, name_size); 251 } 252 } 253 254 void remote_audio_mixer_get_item_info( 255 ddf_fun_t *fun, void *iface, cap_call_handle_t chandle, ipc_call_t *call) 252 253 async_data_read_finalize(&call, name, name_size); 254 } 255 } 256 257 void remote_audio_mixer_get_item_info(ddf_fun_t *fun, void *iface, 258 ipc_call_t *icall) 256 259 { 257 260 audio_mixer_iface_t *mixer_iface = iface; 258 261 259 262 if (!mixer_iface->get_item_info) { 260 async_answer_0( chandle, ENOTSUP);263 async_answer_0(icall, ENOTSUP); 261 264 return; 262 265 } 263 266 264 const unsigned item = DEV_IPC_GET_ARG1(* call);267 const unsigned item = DEV_IPC_GET_ARG1(*icall); 265 268 const char *name = NULL; 266 269 unsigned values = 0; 267 270 const errno_t ret = mixer_iface->get_item_info(fun, item, &name, &values); 268 271 const size_t name_size = name ? str_size(name) + 1 : 0; 269 async_answer_2(chandle, ret, name_size, values); 272 async_answer_2(icall, ret, name_size, values); 273 270 274 /* Send the name. */ 271 275 if (ret == EOK && name_size > 0) { 276 ipc_call_t call; 272 277 size_t size; 273 cap_call_handle_t name_id; 274 if (!async_data_read_receive(&name_id, &size)) { 275 async_answer_0(name_id, EPARTY); 278 if (!async_data_read_receive(&call, &size)) { 279 async_answer_0(&call, EPARTY); 276 280 return; 277 281 } 282 278 283 if (size != name_size) { 279 async_answer_0( name_id, ELIMIT);284 async_answer_0(&call, ELIMIT); 280 285 return; 281 286 } 282 async_data_read_finalize(name_id, name, name_size); 283 } 284 } 285 286 void remote_audio_mixer_set_item_level( 287 ddf_fun_t *fun, void *iface, cap_call_handle_t chandle, ipc_call_t *call) 287 288 async_data_read_finalize(&call, name, name_size); 289 } 290 } 291 292 void remote_audio_mixer_set_item_level(ddf_fun_t *fun, void *iface, 293 ipc_call_t *icall) 288 294 { 289 295 audio_mixer_iface_t *mixer_iface = iface; 290 296 291 297 if (!mixer_iface->set_item_level) { 292 async_answer_0( chandle, ENOTSUP);298 async_answer_0(icall, ENOTSUP); 293 299 return; 294 300 } 295 const unsigned item = DEV_IPC_GET_ARG1(*call); 296 const unsigned value = DEV_IPC_GET_ARG2(*call); 301 302 const unsigned item = DEV_IPC_GET_ARG1(*icall); 303 const unsigned value = DEV_IPC_GET_ARG2(*icall); 297 304 const errno_t ret = mixer_iface->set_item_level(fun, item, value); 298 async_answer_0( chandle, ret);299 } 300 301 void remote_audio_mixer_get_item_level( 302 ddf_fun_t *fun, void *iface, cap_call_handle_t chandle, ipc_call_t *call)305 async_answer_0(icall, ret); 306 } 307 308 void remote_audio_mixer_get_item_level(ddf_fun_t *fun, void *iface, 309 ipc_call_t *icall) 303 310 { 304 311 audio_mixer_iface_t *mixer_iface = iface; 305 312 306 313 if (!mixer_iface->get_item_level) { 307 async_answer_0( chandle, ENOTSUP);314 async_answer_0(icall, ENOTSUP); 308 315 return; 309 316 } 310 const unsigned item = DEV_IPC_GET_ARG1(*call); 317 318 const unsigned item = DEV_IPC_GET_ARG1(*icall); 311 319 unsigned current = 0; 312 320 const errno_t ret = 313 321 mixer_iface->get_item_level(fun, item, ¤t); 314 async_answer_1( chandle, ret, current);322 async_answer_1(icall, ret, current); 315 323 } 316 324 -
uspace/lib/drv/generic/remote_audio_pcm.c
r76f566d r984a9ba 600 600 * SERVER SIDE 601 601 */ 602 static void remote_audio_pcm_get_info_str(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);603 static void remote_audio_pcm_query_caps(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);604 static void remote_audio_pcm_events_register(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);605 static void remote_audio_pcm_events_unregister(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);606 static void remote_audio_pcm_get_buffer_pos(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);607 static void remote_audio_pcm_test_format(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);608 static void remote_audio_pcm_get_buffer(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);609 static void remote_audio_pcm_release_buffer(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);610 static void remote_audio_pcm_start_playback(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);611 static void remote_audio_pcm_stop_playback(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);612 static void remote_audio_pcm_start_capture(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);613 static void remote_audio_pcm_stop_capture(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);602 static void remote_audio_pcm_get_info_str(ddf_fun_t *, void *, ipc_call_t *); 603 static void remote_audio_pcm_query_caps(ddf_fun_t *, void *, ipc_call_t *); 604 static void remote_audio_pcm_events_register(ddf_fun_t *, void *, ipc_call_t *); 605 static void remote_audio_pcm_events_unregister(ddf_fun_t *, void *, ipc_call_t *); 606 static void remote_audio_pcm_get_buffer_pos(ddf_fun_t *, void *, ipc_call_t *); 607 static void remote_audio_pcm_test_format(ddf_fun_t *, void *, ipc_call_t *); 608 static void remote_audio_pcm_get_buffer(ddf_fun_t *, void *, ipc_call_t *); 609 static void remote_audio_pcm_release_buffer(ddf_fun_t *, void *, ipc_call_t *); 610 static void remote_audio_pcm_start_playback(ddf_fun_t *, void *, ipc_call_t *); 611 static void remote_audio_pcm_stop_playback(ddf_fun_t *, void *, ipc_call_t *); 612 static void remote_audio_pcm_start_capture(ddf_fun_t *, void *, ipc_call_t *); 613 static void remote_audio_pcm_stop_capture(ddf_fun_t *, void *, ipc_call_t *); 614 614 615 615 /** Remote audio pcm buffer interface operations. */ … … 636 636 637 637 void remote_audio_pcm_get_info_str(ddf_fun_t *fun, void *iface, 638 cap_call_handle_t chandle,ipc_call_t *call)638 ipc_call_t *call) 639 639 { 640 640 const audio_pcm_iface_t *pcm_iface = iface; 641 641 642 642 if (!pcm_iface->get_info_str) { 643 async_answer_0(chandle, ENOTSUP); 644 return; 645 } 643 async_answer_0(call, ENOTSUP); 644 return; 645 } 646 646 647 const char *name = NULL; 647 648 const errno_t ret = pcm_iface->get_info_str(fun, &name); 648 649 const size_t name_size = name ? str_size(name) + 1 : 0; 649 async_answer_1(chandle, ret, name_size); 650 async_answer_1(call, ret, name_size); 651 650 652 /* Send the string. */ 651 653 if (ret == EOK && name_size > 0) { 654 ipc_call_t call; 652 655 size_t size; 653 cap_call_handle_t name_id; 654 if (!async_data_read_receive(&name_id, &size)) { 655 async_answer_0(name_id, EPARTY); 656 if (!async_data_read_receive(&call, &size)) { 657 async_answer_0(&call, EPARTY); 656 658 return; 657 659 } 660 658 661 if (size != name_size) { 659 async_answer_0( name_id, ELIMIT);662 async_answer_0(&call, ELIMIT); 660 663 return; 661 664 } 662 async_data_read_finalize(name_id, name, name_size); 665 666 async_data_read_finalize(&call, name, name_size); 663 667 } 664 668 } 665 669 666 670 void remote_audio_pcm_query_caps(ddf_fun_t *fun, void *iface, 667 cap_call_handle_t chandle,ipc_call_t *call)671 ipc_call_t *call) 668 672 { 669 673 const audio_pcm_iface_t *pcm_iface = iface; … … 671 675 if (pcm_iface->query_cap) { 672 676 const unsigned value = pcm_iface->query_cap(fun, cap); 673 async_answer_1(c handle, EOK, value);677 async_answer_1(call, EOK, value); 674 678 } else { 675 async_answer_0(c handle, ENOTSUP);679 async_answer_0(call, ENOTSUP); 676 680 } 677 681 } 678 682 679 683 static void remote_audio_pcm_events_register(ddf_fun_t *fun, void *iface, 680 cap_call_handle_t chandle,ipc_call_t *call)684 ipc_call_t *call) 681 685 { 682 686 const audio_pcm_iface_t *pcm_iface = iface; 683 687 if (!pcm_iface->get_event_session || 684 688 !pcm_iface->set_event_session) { 685 async_answer_0(c handle, ENOTSUP);686 return; 687 } 688 689 async_answer_0(c handle, EOK);689 async_answer_0(call, ENOTSUP); 690 return; 691 } 692 693 async_answer_0(call, EOK); 690 694 691 695 ipc_call_t callback_call; 692 cap_call_handle_t callback_handle =async_get_call(&callback_call);696 async_get_call(&callback_call); 693 697 async_sess_t *sess = 694 698 async_callback_receive_start(EXCHANGE_ATOMIC, &callback_call); 695 699 if (sess == NULL) { 696 700 ddf_msg(LVL_DEBUG, "Failed to create event callback"); 697 async_answer_0(callback_handle, EAGAIN); 698 return; 699 } 701 async_answer_0(&callback_call, EAGAIN); 702 return; 703 } 704 700 705 const errno_t ret = pcm_iface->set_event_session(fun, sess); 701 706 if (ret != EOK) { 702 707 ddf_msg(LVL_DEBUG, "Failed to set event callback."); 703 708 async_hangup(sess); 704 async_answer_0(callback_handle, ret); 705 return; 706 } 707 async_answer_0(callback_handle, EOK); 709 async_answer_0(&callback_call, ret); 710 return; 711 } 712 713 async_answer_0(&callback_call, EOK); 708 714 } 709 715 710 716 static void remote_audio_pcm_events_unregister(ddf_fun_t *fun, void *iface, 711 cap_call_handle_t chandle,ipc_call_t *call)717 ipc_call_t *call) 712 718 { 713 719 const audio_pcm_iface_t *pcm_iface = iface; 714 720 if (!pcm_iface->get_event_session || 715 721 !pcm_iface->set_event_session) { 716 async_answer_0(chandle, ENOTSUP); 717 return; 718 } 722 async_answer_0(call, ENOTSUP); 723 return; 724 } 725 719 726 async_sess_t *sess = pcm_iface->get_event_session(fun); 720 727 if (sess) { … … 722 729 pcm_iface->set_event_session(fun, NULL); 723 730 } 724 async_answer_0(chandle, EOK); 731 732 async_answer_0(call, EOK); 725 733 } 726 734 727 735 void remote_audio_pcm_get_buffer_pos(ddf_fun_t *fun, void *iface, 728 cap_call_handle_t chandle,ipc_call_t *call)736 ipc_call_t *call) 729 737 { 730 738 const audio_pcm_iface_t *pcm_iface = iface; … … 732 740 const errno_t ret = pcm_iface->get_buffer_pos ? 733 741 pcm_iface->get_buffer_pos(fun, &pos) : ENOTSUP; 734 async_answer_1(c handle, ret, pos);742 async_answer_1(call, ret, pos); 735 743 } 736 744 737 745 void remote_audio_pcm_test_format(ddf_fun_t *fun, void *iface, 738 cap_call_handle_t chandle,ipc_call_t *call)746 ipc_call_t *call) 739 747 { 740 748 const audio_pcm_iface_t *pcm_iface = iface; … … 744 752 const errno_t ret = pcm_iface->test_format ? 745 753 pcm_iface->test_format(fun, &channels, &rate, &format) : ENOTSUP; 746 async_answer_3(c handle, ret, channels, rate, format);754 async_answer_3(call, ret, channels, rate, format); 747 755 } 748 756 749 757 void remote_audio_pcm_get_buffer(ddf_fun_t *fun, void *iface, 750 cap_call_handle_t chandle,ipc_call_t *call)758 ipc_call_t *call) 751 759 { 752 760 const audio_pcm_iface_t *pcm_iface = iface; … … 754 762 if (!pcm_iface->get_buffer || 755 763 !pcm_iface->release_buffer) { 756 async_answer_0(c handle, ENOTSUP);764 async_answer_0(call, ENOTSUP); 757 765 return; 758 766 } … … 760 768 size_t size = DEV_IPC_GET_ARG1(*call); 761 769 errno_t ret = pcm_iface->get_buffer(fun, &buffer, &size); 762 async_answer_1(c handle, ret, size);770 async_answer_1(call, ret, size); 763 771 if (ret != EOK || size == 0) 764 772 return; 765 773 766 774 /* Share the buffer. */ 775 ipc_call_t share; 767 776 size_t share_size = 0; 768 cap_call_handle_t share_id = 0;769 777 770 778 ddf_msg(LVL_DEBUG2, "Receiving share request."); 771 if (!async_share_in_receive(&share _id, &share_size)) {779 if (!async_share_in_receive(&share, &share_size)) { 772 780 ddf_msg(LVL_DEBUG, "Failed to share pcm buffer."); 773 781 pcm_iface->release_buffer(fun); 774 async_answer_0( share_id, EPARTY);782 async_answer_0(&share, EPARTY); 775 783 return; 776 784 } … … 780 788 ddf_msg(LVL_DEBUG, "Incorrect pcm buffer size requested."); 781 789 pcm_iface->release_buffer(fun); 782 async_answer_0( share_id, ELIMIT);790 async_answer_0(&share, ELIMIT); 783 791 return; 784 792 } 785 793 786 794 ddf_msg(LVL_DEBUG2, "Calling share finalize."); 787 ret = async_share_in_finalize( share_id, buffer, AS_AREA_WRITE |795 ret = async_share_in_finalize(&share, buffer, AS_AREA_WRITE | 788 796 AS_AREA_READ); 789 797 if (ret != EOK) { … … 797 805 798 806 void remote_audio_pcm_release_buffer(ddf_fun_t *fun, void *iface, 799 cap_call_handle_t chandle,ipc_call_t *call)807 ipc_call_t *call) 800 808 { 801 809 const audio_pcm_iface_t *pcm_iface = iface; … … 803 811 const errno_t ret = pcm_iface->release_buffer ? 804 812 pcm_iface->release_buffer(fun) : ENOTSUP; 805 async_answer_0(c handle, ret);813 async_answer_0(call, ret); 806 814 } 807 815 808 816 void remote_audio_pcm_start_playback(ddf_fun_t *fun, void *iface, 809 cap_call_handle_t chandle,ipc_call_t *call)817 ipc_call_t *call) 810 818 { 811 819 const audio_pcm_iface_t *pcm_iface = iface; … … 819 827 pcm_iface->start_playback(fun, frames, channels, rate, format) : 820 828 ENOTSUP; 821 async_answer_0(c handle, ret);829 async_answer_0(call, ret); 822 830 } 823 831 824 832 void remote_audio_pcm_stop_playback(ddf_fun_t *fun, void *iface, 825 cap_call_handle_t chandle,ipc_call_t *call)833 ipc_call_t *call) 826 834 { 827 835 const audio_pcm_iface_t *pcm_iface = iface; … … 830 838 const errno_t ret = pcm_iface->stop_playback ? 831 839 pcm_iface->stop_playback(fun, immediate) : ENOTSUP; 832 async_answer_0(c handle, ret);840 async_answer_0(call, ret); 833 841 } 834 842 835 843 void remote_audio_pcm_start_capture(ddf_fun_t *fun, void *iface, 836 cap_call_handle_t chandle,ipc_call_t *call)844 ipc_call_t *call) 837 845 { 838 846 const audio_pcm_iface_t *pcm_iface = iface; … … 846 854 pcm_iface->start_capture(fun, frames, channels, rate, format) : 847 855 ENOTSUP; 848 async_answer_0(c handle, ret);856 async_answer_0(call, ret); 849 857 } 850 858 851 859 void remote_audio_pcm_stop_capture(ddf_fun_t *fun, void *iface, 852 cap_call_handle_t chandle,ipc_call_t *call)860 ipc_call_t *call) 853 861 { 854 862 const audio_pcm_iface_t *pcm_iface = iface; … … 857 865 const errno_t ret = pcm_iface->stop_capture ? 858 866 pcm_iface->stop_capture(fun, immediate) : ENOTSUP; 859 async_answer_0(c handle, ret);867 async_answer_0(call, ret); 860 868 } 861 869 … … 863 871 * @} 864 872 */ 865 -
uspace/lib/drv/generic/remote_battery_dev.c
r76f566d r984a9ba 90 90 } 91 91 92 static void remote_battery_status_get(ddf_fun_t *, void *, cap_call_handle_t, 93 ipc_call_t *); 94 static void remote_battery_charge_level_get(ddf_fun_t *, void *, cap_call_handle_t, 95 ipc_call_t *); 92 static void remote_battery_status_get(ddf_fun_t *, void *, ipc_call_t *); 93 static void remote_battery_charge_level_get(ddf_fun_t *, void *, ipc_call_t *); 96 94 97 95 /** Remote battery interface operations */ … … 114 112 /** Process the status_get() request from the remote client 115 113 * 116 * @param fun The function from which the battery status is read 117 * @param ops The local ops structure 114 * @param fun The function from which the battery status is read 115 * @param ops The local ops structure 116 * 118 117 */ 119 static void 120 remote_battery_status_get(ddf_fun_t *fun, void *ops, cap_call_handle_t chandle, 118 static void remote_battery_status_get(ddf_fun_t *fun, void *ops, 121 119 ipc_call_t *call) 122 120 { … … 124 122 125 123 if (bops->battery_status_get == NULL) { 126 async_answer_0(c handle, ENOTSUP);124 async_answer_0(call, ENOTSUP); 127 125 return; 128 126 } … … 132 130 133 131 if (rc != EOK) 134 async_answer_0(c handle, rc);132 async_answer_0(call, rc); 135 133 else 136 async_answer_1(c handle, rc, batt_status);134 async_answer_1(call, rc, batt_status); 137 135 } 138 136 139 137 /** Process the battery_charge_level_get() request from the remote client 140 138 * 141 * @param fun 142 * @param ops 139 * @param fun The function from which the battery charge level is read 140 * @param ops The local ops structure 143 141 * 144 142 */ 145 static void 146 remote_battery_charge_level_get(ddf_fun_t *fun, void *ops, cap_call_handle_t chandle, 143 static void remote_battery_charge_level_get(ddf_fun_t *fun, void *ops, 147 144 ipc_call_t *call) 148 145 { … … 150 147 151 148 if (bops->battery_charge_level_get == NULL) { 152 async_answer_0(c handle, ENOTSUP);149 async_answer_0(call, ENOTSUP); 153 150 return; 154 151 } … … 158 155 159 156 if (rc != EOK) 160 async_answer_0(c handle, rc);157 async_answer_0(call, rc); 161 158 else 162 async_answer_1(c handle, rc, battery_level);159 async_answer_1(call, rc, battery_level); 163 160 } 164 -
uspace/lib/drv/generic/remote_clock_dev.c
r76f566d r984a9ba 42 42 #include <ddf/driver.h> 43 43 44 static void remote_clock_time_get(ddf_fun_t *, void *, cap_call_handle_t, 45 ipc_call_t *); 46 static void remote_clock_time_set(ddf_fun_t *, void *, cap_call_handle_t, 47 ipc_call_t *); 44 static void remote_clock_time_get(ddf_fun_t *, void *, ipc_call_t *); 45 static void remote_clock_time_set(ddf_fun_t *, void *, ipc_call_t *); 48 46 49 47 /** Remote clock interface operations */ … … 65 63 /** Process the time_get() request from the remote client 66 64 * 67 * @param fun The function from which the time is read 68 * @param ops The local ops structure 65 * @param fun The function from which the time is read 66 * @param ops The local ops structure 67 * 69 68 */ 70 static void 71 remote_clock_time_get(ddf_fun_t *fun, void *ops, cap_call_handle_t chandle, 72 ipc_call_t *call) 69 static void remote_clock_time_get(ddf_fun_t *fun, void *ops, ipc_call_t *call) 73 70 { 74 71 clock_dev_ops_t *clock_dev_ops = (clock_dev_ops_t *) ops; 75 cap_call_handle_t call_handle;76 72 struct tm t; 77 73 errno_t rc; 74 75 ipc_call_t data; 78 76 size_t len; 79 80 if (!async_data_read_receive(&call_handle, &len)) { 77 if (!async_data_read_receive(&data, &len)) { 81 78 /* TODO: Handle protocol error */ 82 async_answer_0(c handle, EINVAL);79 async_answer_0(call, EINVAL); 83 80 return; 84 81 } … … 86 83 if (!clock_dev_ops->time_get) { 87 84 /* The driver does not provide the time_get() functionality */ 88 async_answer_0( call_handle, ENOTSUP);89 async_answer_0(c handle, ENOTSUP);85 async_answer_0(&data, ENOTSUP); 86 async_answer_0(call, ENOTSUP); 90 87 return; 91 88 } … … 95 92 if (rc != EOK) { 96 93 /* Some error occurred */ 97 async_answer_0( call_handle, rc);98 async_answer_0(c handle, rc);94 async_answer_0(&data, rc); 95 async_answer_0(call, rc); 99 96 return; 100 97 } 101 98 102 99 /* The operation was successful */ 103 async_data_read_finalize( call_handle, &t, sizeof(struct tm));104 async_answer_0(c handle, rc);100 async_data_read_finalize(&data, &t, sizeof(struct tm)); 101 async_answer_0(call, rc); 105 102 } 106 103 107 104 /** Process the time_set() request from the remote client 108 105 * 109 * @param fun The function to which the data are written 110 * @param ops The local ops structure 106 * @param fun The function to which the data are written 107 * @param ops The local ops structure 108 * 111 109 */ 112 static void remote_clock_time_set(ddf_fun_t *fun, void *ops, 113 cap_call_handle_t chandle, ipc_call_t *call) 110 static void remote_clock_time_set(ddf_fun_t *fun, void *ops, ipc_call_t *call) 114 111 { 115 112 clock_dev_ops_t *clock_dev_ops = (clock_dev_ops_t *) ops; 116 errno_t rc; 117 struct tm t; 118 cap_call_handle_t call_handle; 119 size_t len; 113 errno_t rc; 114 struct tm t; 120 115 121 if (!async_data_write_receive(&call_handle, &len)) { 116 ipc_call_t data; 117 size_t len; 118 119 if (!async_data_write_receive(&data, &len)) { 122 120 /* TODO: Handle protocol error */ 123 async_answer_0(c handle, EINVAL);121 async_answer_0(call, EINVAL); 124 122 return; 125 123 } … … 127 125 if (!clock_dev_ops->time_set) { 128 126 /* The driver does not support the time_set() functionality */ 129 async_answer_0( call_handle, ENOTSUP);130 async_answer_0(c handle, ENOTSUP);127 async_answer_0(&data, ENOTSUP); 128 async_answer_0(call, ENOTSUP); 131 129 return; 132 130 } 133 131 134 async_data_write_finalize( call_handle, &t, sizeof(struct tm));132 async_data_write_finalize(&data, &t, sizeof(struct tm)); 135 133 136 134 rc = (*clock_dev_ops->time_set)(fun, &t); 137 135 138 async_answer_0(c handle, rc);136 async_answer_0(call, rc); 139 137 } 140 138 … … 142 140 * @} 143 141 */ 144 -
uspace/lib/drv/generic/remote_hw_res.c
r76f566d r984a9ba 41 41 #include "ddf/driver.h" 42 42 43 static void remote_hw_res_get_resource_list(ddf_fun_t *, void *, cap_call_handle_t, 44 ipc_call_t *); 45 static void remote_hw_res_enable_interrupt(ddf_fun_t *, void *, cap_call_handle_t, 46 ipc_call_t *); 47 static void remote_hw_res_disable_interrupt(ddf_fun_t *, void *, cap_call_handle_t, 48 ipc_call_t *); 49 static void remote_hw_res_clear_interrupt(ddf_fun_t *, void *, cap_call_handle_t, 50 ipc_call_t *); 51 static void remote_hw_res_dma_channel_setup(ddf_fun_t *, void *, cap_call_handle_t, 52 ipc_call_t *); 53 static void remote_hw_res_dma_channel_remain(ddf_fun_t *, void *, cap_call_handle_t, 54 ipc_call_t *); 43 static void remote_hw_res_get_resource_list(ddf_fun_t *, void *, ipc_call_t *); 44 static void remote_hw_res_enable_interrupt(ddf_fun_t *, void *, ipc_call_t *); 45 static void remote_hw_res_disable_interrupt(ddf_fun_t *, void *, ipc_call_t *); 46 static void remote_hw_res_clear_interrupt(ddf_fun_t *, void *, ipc_call_t *); 47 static void remote_hw_res_dma_channel_setup(ddf_fun_t *, void *, ipc_call_t *); 48 static void remote_hw_res_dma_channel_remain(ddf_fun_t *, void *, ipc_call_t *); 55 49 56 50 static const remote_iface_func_ptr_t remote_hw_res_iface_ops [] = { … … 69 63 70 64 static void remote_hw_res_enable_interrupt(ddf_fun_t *fun, void *ops, 71 cap_call_handle_t chandle,ipc_call_t *call)65 ipc_call_t *call) 72 66 { 73 67 hw_res_ops_t *hw_res_ops = (hw_res_ops_t *) ops; 74 68 75 69 if (hw_res_ops->enable_interrupt == NULL) { 76 async_answer_0(c handle, ENOTSUP);70 async_answer_0(call, ENOTSUP); 77 71 return; 78 72 } … … 80 74 const int irq = DEV_IPC_GET_ARG1(*call); 81 75 const errno_t ret = hw_res_ops->enable_interrupt(fun, irq); 82 async_answer_0(c handle, ret);76 async_answer_0(call, ret); 83 77 } 84 78 85 79 static void remote_hw_res_disable_interrupt(ddf_fun_t *fun, void *ops, 86 cap_call_handle_t chandle,ipc_call_t *call)80 ipc_call_t *call) 87 81 { 88 82 hw_res_ops_t *hw_res_ops = (hw_res_ops_t *) ops; 89 83 90 84 if (hw_res_ops->disable_interrupt == NULL) { 91 async_answer_0(c handle, ENOTSUP);85 async_answer_0(call, ENOTSUP); 92 86 return; 93 87 } … … 95 89 const int irq = DEV_IPC_GET_ARG1(*call); 96 90 const errno_t ret = hw_res_ops->disable_interrupt(fun, irq); 97 async_answer_0(c handle, ret);91 async_answer_0(call, ret); 98 92 } 99 93 100 94 static void remote_hw_res_clear_interrupt(ddf_fun_t *fun, void *ops, 101 cap_call_handle_t chandle,ipc_call_t *call)95 ipc_call_t *call) 102 96 { 103 97 hw_res_ops_t *hw_res_ops = (hw_res_ops_t *) ops; 104 98 105 99 if (hw_res_ops->clear_interrupt == NULL) { 106 async_answer_0(c handle, ENOTSUP);100 async_answer_0(call, ENOTSUP); 107 101 return; 108 102 } … … 110 104 const int irq = DEV_IPC_GET_ARG1(*call); 111 105 const errno_t ret = hw_res_ops->enable_interrupt(fun, irq); 112 async_answer_0(c handle, ret);106 async_answer_0(call, ret); 113 107 } 114 108 115 109 static void remote_hw_res_get_resource_list(ddf_fun_t *fun, void *ops, 116 cap_call_handle_t chandle,ipc_call_t *call)110 ipc_call_t *call) 117 111 { 118 112 hw_res_ops_t *hw_res_ops = (hw_res_ops_t *) ops; 119 113 120 114 if (hw_res_ops->get_resource_list == NULL) { 121 async_answer_0(c handle, ENOTSUP);115 async_answer_0(call, ENOTSUP); 122 116 return; 123 117 } … … 125 119 hw_resource_list_t *hw_resources = hw_res_ops->get_resource_list(fun); 126 120 if (hw_resources == NULL) { 127 async_answer_0(c handle, ENOENT);121 async_answer_0(call, ENOENT); 128 122 return; 129 123 } 130 124 131 async_answer_1(c handle, EOK, hw_resources->count);125 async_answer_1(call, EOK, hw_resources->count); 132 126 127 ipc_call_t data; 133 128 size_t len; 134 if (!async_data_read_receive(& chandle, &len)) {129 if (!async_data_read_receive(&data, &len)) { 135 130 /* Protocol error - the recipient is not accepting data */ 136 131 return; 137 132 } 138 async_data_read_finalize(chandle, hw_resources->resources, len); 133 134 async_data_read_finalize(&data, hw_resources->resources, len); 139 135 } 140 136 141 137 static void remote_hw_res_dma_channel_setup(ddf_fun_t *fun, void *ops, 142 cap_call_handle_t chandle,ipc_call_t *call)138 ipc_call_t *call) 143 139 { 144 140 hw_res_ops_t *hw_res_ops = ops; 145 141 146 142 if (hw_res_ops->dma_channel_setup == NULL) { 147 async_answer_0(c handle, ENOTSUP);143 async_answer_0(call, ENOTSUP); 148 144 return; 149 145 } 146 150 147 const unsigned channel = DEV_IPC_GET_ARG1(*call) & 0xffff; 151 148 const uint8_t mode = DEV_IPC_GET_ARG1(*call) >> 16; … … 155 152 const errno_t ret = hw_res_ops->dma_channel_setup( 156 153 fun, channel, address, size, mode); 157 async_answer_0(c handle, ret);154 async_answer_0(call, ret); 158 155 } 159 156 160 157 static void remote_hw_res_dma_channel_remain(ddf_fun_t *fun, void *ops, 161 cap_call_handle_t chandle,ipc_call_t *call)158 ipc_call_t *call) 162 159 { 163 160 hw_res_ops_t *hw_res_ops = ops; 164 161 165 162 if (hw_res_ops->dma_channel_setup == NULL) { 166 async_answer_0(c handle, ENOTSUP);163 async_answer_0(call, ENOTSUP); 167 164 return; 168 165 } 166 169 167 const unsigned channel = DEV_IPC_GET_ARG1(*call); 170 168 size_t remain = 0; 171 169 const errno_t ret = hw_res_ops->dma_channel_remain(fun, channel, &remain); 172 async_answer_1(c handle, ret, remain);170 async_answer_1(call, ret, remain); 173 171 } 172 174 173 /** 175 174 * @} -
uspace/lib/drv/generic/remote_ieee80211.c
r76f566d r984a9ba 268 268 269 269 static void remote_ieee80211_get_scan_results(ddf_fun_t *fun, void *iface, 270 cap_call_handle_t chandle,ipc_call_t *call)270 ipc_call_t *call) 271 271 { 272 272 ieee80211_iface_t *ieee80211_iface = (ieee80211_iface_t *) iface; … … 280 280 errno_t rc = ieee80211_iface->get_scan_results(fun, &scan_results, now); 281 281 if (rc == EOK) { 282 cap_call_handle_t data_chandle;282 ipc_call_t data; 283 283 size_t max_len; 284 if (!async_data_read_receive(&data _chandle, &max_len)) {285 async_answer_0( data_chandle, EINVAL);286 async_answer_0(c handle, EINVAL);284 if (!async_data_read_receive(&data, &max_len)) { 285 async_answer_0(&data, EINVAL); 286 async_answer_0(call, EINVAL); 287 287 return; 288 288 } 289 289 290 290 if (max_len < sizeof(ieee80211_scan_results_t)) { 291 async_answer_0( data_chandle, ELIMIT);292 async_answer_0(c handle, ELIMIT);291 async_answer_0(&data, ELIMIT); 292 async_answer_0(call, ELIMIT); 293 293 return; 294 294 } 295 295 296 async_data_read_finalize( data_chandle, &scan_results,296 async_data_read_finalize(&data, &scan_results, 297 297 sizeof(ieee80211_scan_results_t)); 298 298 } 299 299 300 async_answer_0(c handle, rc);300 async_answer_0(call, rc); 301 301 } 302 302 303 303 static void remote_ieee80211_connect(ddf_fun_t *fun, void *iface, 304 cap_call_handle_t chandle,ipc_call_t *call)304 ipc_call_t *call) 305 305 { 306 306 ieee80211_iface_t *ieee80211_iface = (ieee80211_iface_t *) iface; … … 310 310 char password[MAX_STRING_SIZE]; 311 311 312 cap_call_handle_t data_chandle;312 ipc_call_t data; 313 313 size_t len; 314 if (!async_data_write_receive(&data _chandle, &len)) {315 async_answer_0( data_chandle, EINVAL);316 async_answer_0(c handle, EINVAL);314 if (!async_data_write_receive(&data, &len)) { 315 async_answer_0(&data, EINVAL); 316 async_answer_0(call, EINVAL); 317 317 return; 318 318 } 319 319 320 320 if (len > MAX_STRING_SIZE) { 321 async_answer_0( data_chandle, EINVAL);322 async_answer_0(c handle, EINVAL);323 return; 324 } 325 326 errno_t rc = async_data_write_finalize( data_chandle, ssid_start, len);321 async_answer_0(&data, EINVAL); 322 async_answer_0(call, EINVAL); 323 return; 324 } 325 326 errno_t rc = async_data_write_finalize(&data, ssid_start, len); 327 327 if (rc != EOK) { 328 async_answer_0( data_chandle, EINVAL);329 async_answer_0(c handle, EINVAL);330 return; 331 } 332 333 if (!async_data_write_receive(&data _chandle, &len)) {334 async_answer_0( data_chandle, EINVAL);335 async_answer_0(c handle, EINVAL);328 async_answer_0(&data, EINVAL); 329 async_answer_0(call, EINVAL); 330 return; 331 } 332 333 if (!async_data_write_receive(&data, &len)) { 334 async_answer_0(&data, EINVAL); 335 async_answer_0(call, EINVAL); 336 336 return; 337 337 } 338 338 339 339 if (len > MAX_STRING_SIZE) { 340 async_answer_0( data_chandle, EINVAL);341 async_answer_0(c handle, EINVAL);342 return; 343 } 344 345 rc = async_data_write_finalize( data_chandle, password, len);340 async_answer_0(&data, EINVAL); 341 async_answer_0(call, EINVAL); 342 return; 343 } 344 345 rc = async_data_write_finalize(&data, password, len); 346 346 if (rc != EOK) { 347 async_answer_0( data_chandle, EINVAL);348 async_answer_0(c handle, EINVAL);347 async_answer_0(&data, EINVAL); 348 async_answer_0(call, EINVAL); 349 349 return; 350 350 } … … 352 352 rc = ieee80211_iface->connect(fun, ssid_start, password); 353 353 354 async_answer_0(c handle, rc);354 async_answer_0(call, rc); 355 355 } 356 356 357 357 static void remote_ieee80211_disconnect(ddf_fun_t *fun, void *iface, 358 cap_call_handle_t chandle,ipc_call_t *call)358 ipc_call_t *call) 359 359 { 360 360 ieee80211_iface_t *ieee80211_iface = (ieee80211_iface_t *) iface; 361 361 assert(ieee80211_iface->disconnect); 362 362 errno_t rc = ieee80211_iface->disconnect(fun); 363 async_answer_0(c handle, rc);363 async_answer_0(call, rc); 364 364 } 365 365 -
uspace/lib/drv/generic/remote_led_dev.c
r76f566d r984a9ba 41 41 #include <ddf/driver.h> 42 42 43 static void remote_led_color_set(ddf_fun_t *, void *, cap_call_handle_t, 44 ipc_call_t *); 43 static void remote_led_color_set(ddf_fun_t *, void *, ipc_call_t *); 45 44 46 45 /** Remote LED interface operations */ … … 66 65 * 67 66 */ 68 static void remote_led_color_set(ddf_fun_t *fun, void *ops, cap_call_handle_t chandle, 69 ipc_call_t *call) 67 static void remote_led_color_set(ddf_fun_t *fun, void *ops, ipc_call_t *call) 70 68 { 71 69 led_dev_ops_t *led_dev_ops = (led_dev_ops_t *) ops; … … 73 71 74 72 if (!led_dev_ops->color_set) { 75 async_answer_0(c handle, ENOTSUP);73 async_answer_0(call, ENOTSUP); 76 74 return; 77 75 } 78 76 79 77 errno_t rc = (*led_dev_ops->color_set)(fun, color); 80 async_answer_0(c handle, rc);78 async_answer_0(call, rc); 81 79 } 82 80 -
uspace/lib/drv/generic/remote_nic.c
r76f566d r984a9ba 1337 1337 1338 1338 static void remote_nic_send_frame(ddf_fun_t *dev, void *iface, 1339 cap_call_handle_t chandle,ipc_call_t *call)1339 ipc_call_t *call) 1340 1340 { 1341 1341 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1348 1348 rc = async_data_write_accept(&data, false, 0, 0, 0, &size); 1349 1349 if (rc != EOK) { 1350 async_answer_0(c handle, EINVAL);1350 async_answer_0(call, EINVAL); 1351 1351 return; 1352 1352 } 1353 1353 1354 1354 rc = nic_iface->send_frame(dev, data, size); 1355 async_answer_0(c handle, rc);1355 async_answer_0(call, rc); 1356 1356 free(data); 1357 1357 } 1358 1358 1359 1359 static void remote_nic_callback_create(ddf_fun_t *dev, void *iface, 1360 cap_call_handle_t chandle,ipc_call_t *call)1360 ipc_call_t *call) 1361 1361 { 1362 1362 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1364 1364 1365 1365 errno_t rc = nic_iface->callback_create(dev); 1366 async_answer_0(c handle, rc);1366 async_answer_0(call, rc); 1367 1367 } 1368 1368 1369 1369 static void remote_nic_get_state(ddf_fun_t *dev, void *iface, 1370 cap_call_handle_t chandle,ipc_call_t *call)1370 ipc_call_t *call) 1371 1371 { 1372 1372 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1376 1376 1377 1377 errno_t rc = nic_iface->get_state(dev, &state); 1378 async_answer_1(c handle, rc, state);1378 async_answer_1(call, rc, state); 1379 1379 } 1380 1380 1381 1381 static void remote_nic_set_state(ddf_fun_t *dev, void *iface, 1382 cap_call_handle_t chandle,ipc_call_t *call)1382 ipc_call_t *call) 1383 1383 { 1384 1384 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1388 1388 1389 1389 errno_t rc = nic_iface->set_state(dev, state); 1390 async_answer_0(c handle, rc);1390 async_answer_0(call, rc); 1391 1391 } 1392 1392 1393 1393 static void remote_nic_get_address(ddf_fun_t *dev, void *iface, 1394 cap_call_handle_t chandle,ipc_call_t *call)1394 ipc_call_t *call) 1395 1395 { 1396 1396 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1402 1402 errno_t rc = nic_iface->get_address(dev, &address); 1403 1403 if (rc == EOK) { 1404 ipc_call_t data; 1404 1405 size_t max_len; 1405 cap_call_handle_t data_chandle;1406 1406 1407 1407 /* All errors will be translated into EPARTY anyway */ 1408 if (!async_data_read_receive(&data _chandle, &max_len)) {1409 async_answer_0( data_chandle, EINVAL);1410 async_answer_0(c handle, EINVAL);1408 if (!async_data_read_receive(&data, &max_len)) { 1409 async_answer_0(&data, EINVAL); 1410 async_answer_0(call, EINVAL); 1411 1411 return; 1412 1412 } 1413 1413 1414 1414 if (max_len != sizeof(nic_address_t)) { 1415 async_answer_0( data_chandle, ELIMIT);1416 async_answer_0(c handle, ELIMIT);1417 return; 1418 } 1419 1420 async_data_read_finalize( data_chandle, &address,1415 async_answer_0(&data, ELIMIT); 1416 async_answer_0(call, ELIMIT); 1417 return; 1418 } 1419 1420 async_data_read_finalize(&data, &address, 1421 1421 sizeof(nic_address_t)); 1422 1422 } 1423 1423 1424 async_answer_0(c handle, rc);1424 async_answer_0(call, rc); 1425 1425 } 1426 1426 1427 1427 static void remote_nic_set_address(ddf_fun_t *dev, void *iface, 1428 cap_call_handle_t chandle, ipc_call_t *call) 1429 { 1430 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1431 1428 ipc_call_t *call) 1429 { 1430 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1431 1432 ipc_call_t data; 1432 1433 size_t length; 1433 cap_call_handle_t data_chandle; 1434 if (!async_data_write_receive(&data_chandle, &length)) { 1435 async_answer_0(data_chandle, EINVAL); 1436 async_answer_0(chandle, EINVAL); 1434 if (!async_data_write_receive(&data, &length)) { 1435 async_answer_0(&data, EINVAL); 1436 async_answer_0(call, EINVAL); 1437 1437 return; 1438 1438 } 1439 1439 1440 1440 if (length > sizeof(nic_address_t)) { 1441 async_answer_0( data_chandle, ELIMIT);1442 async_answer_0(c handle, ELIMIT);1441 async_answer_0(&data, ELIMIT); 1442 async_answer_0(call, ELIMIT); 1443 1443 return; 1444 1444 } 1445 1445 1446 1446 nic_address_t address; 1447 if (async_data_write_finalize( data_chandle, &address, length) != EOK) {1448 async_answer_0(c handle, EINVAL);1447 if (async_data_write_finalize(&data, &address, length) != EOK) { 1448 async_answer_0(call, EINVAL); 1449 1449 return; 1450 1450 } … … 1452 1452 if (nic_iface->set_address != NULL) { 1453 1453 errno_t rc = nic_iface->set_address(dev, &address); 1454 async_answer_0(c handle, rc);1454 async_answer_0(call, rc); 1455 1455 } else 1456 async_answer_0(c handle, ENOTSUP);1456 async_answer_0(call, ENOTSUP); 1457 1457 } 1458 1458 1459 1459 static void remote_nic_get_stats(ddf_fun_t *dev, void *iface, 1460 cap_call_handle_t chandle,ipc_call_t *call)1460 ipc_call_t *call) 1461 1461 { 1462 1462 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1463 1463 if (nic_iface->get_stats == NULL) { 1464 async_answer_0(c handle, ENOTSUP);1464 async_answer_0(call, ENOTSUP); 1465 1465 return; 1466 1466 } … … 1471 1471 errno_t rc = nic_iface->get_stats(dev, &stats); 1472 1472 if (rc == EOK) { 1473 cap_call_handle_t data_chandle;1473 ipc_call_t data; 1474 1474 size_t max_len; 1475 if (!async_data_read_receive(&data _chandle, &max_len)) {1476 async_answer_0( data_chandle, EINVAL);1477 async_answer_0(c handle, EINVAL);1475 if (!async_data_read_receive(&data, &max_len)) { 1476 async_answer_0(&data, EINVAL); 1477 async_answer_0(call, EINVAL); 1478 1478 return; 1479 1479 } 1480 1480 1481 1481 if (max_len < sizeof(nic_device_stats_t)) { 1482 async_answer_0( data_chandle, ELIMIT);1483 async_answer_0(c handle, ELIMIT);1484 return; 1485 } 1486 1487 async_data_read_finalize( data_chandle, &stats,1482 async_answer_0(&data, ELIMIT); 1483 async_answer_0(call, ELIMIT); 1484 return; 1485 } 1486 1487 async_data_read_finalize(&data, &stats, 1488 1488 sizeof(nic_device_stats_t)); 1489 1489 } 1490 1490 1491 async_answer_0(c handle, rc);1491 async_answer_0(call, rc); 1492 1492 } 1493 1493 1494 1494 static void remote_nic_get_device_info(ddf_fun_t *dev, void *iface, 1495 cap_call_handle_t chandle,ipc_call_t *call)1495 ipc_call_t *call) 1496 1496 { 1497 1497 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1498 1498 if (nic_iface->get_device_info == NULL) { 1499 async_answer_0(c handle, ENOTSUP);1499 async_answer_0(call, ENOTSUP); 1500 1500 return; 1501 1501 } … … 1506 1506 errno_t rc = nic_iface->get_device_info(dev, &info); 1507 1507 if (rc == EOK) { 1508 cap_call_handle_t data_chandle;1508 ipc_call_t data; 1509 1509 size_t max_len; 1510 if (!async_data_read_receive(&data _chandle, &max_len)) {1511 async_answer_0( data_chandle, EINVAL);1512 async_answer_0(c handle, EINVAL);1510 if (!async_data_read_receive(&data, &max_len)) { 1511 async_answer_0(&data, EINVAL); 1512 async_answer_0(call, EINVAL); 1513 1513 return; 1514 1514 } 1515 1515 1516 1516 if (max_len < sizeof (nic_device_info_t)) { 1517 async_answer_0( data_chandle, ELIMIT);1518 async_answer_0(c handle, ELIMIT);1519 return; 1520 } 1521 1522 async_data_read_finalize( data_chandle, &info,1517 async_answer_0(&data, ELIMIT); 1518 async_answer_0(call, ELIMIT); 1519 return; 1520 } 1521 1522 async_data_read_finalize(&data, &info, 1523 1523 sizeof(nic_device_info_t)); 1524 1524 } 1525 1525 1526 async_answer_0(c handle, rc);1526 async_answer_0(call, rc); 1527 1527 } 1528 1528 1529 1529 static void remote_nic_get_cable_state(ddf_fun_t *dev, void *iface, 1530 cap_call_handle_t chandle,ipc_call_t *call)1530 ipc_call_t *call) 1531 1531 { 1532 1532 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1533 1533 if (nic_iface->get_cable_state == NULL) { 1534 async_answer_0(c handle, ENOTSUP);1534 async_answer_0(call, ENOTSUP); 1535 1535 return; 1536 1536 } … … 1539 1539 1540 1540 errno_t rc = nic_iface->get_cable_state(dev, &cs); 1541 async_answer_1(c handle, rc, (sysarg_t) cs);1541 async_answer_1(call, rc, (sysarg_t) cs); 1542 1542 } 1543 1543 1544 1544 static void remote_nic_get_operation_mode(ddf_fun_t *dev, void *iface, 1545 cap_call_handle_t chandle,ipc_call_t *call)1545 ipc_call_t *call) 1546 1546 { 1547 1547 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1548 1548 if (nic_iface->get_operation_mode == NULL) { 1549 async_answer_0(c handle, ENOTSUP);1549 async_answer_0(call, ENOTSUP); 1550 1550 return; 1551 1551 } … … 1556 1556 1557 1557 errno_t rc = nic_iface->get_operation_mode(dev, &speed, &duplex, &role); 1558 async_answer_3(c handle, rc, (sysarg_t) speed, (sysarg_t) duplex,1558 async_answer_3(call, rc, (sysarg_t) speed, (sysarg_t) duplex, 1559 1559 (sysarg_t) role); 1560 1560 } 1561 1561 1562 1562 static void remote_nic_set_operation_mode(ddf_fun_t *dev, void *iface, 1563 cap_call_handle_t chandle,ipc_call_t *call)1563 ipc_call_t *call) 1564 1564 { 1565 1565 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1566 1566 if (nic_iface->set_operation_mode == NULL) { 1567 async_answer_0(c handle, ENOTSUP);1567 async_answer_0(call, ENOTSUP); 1568 1568 return; 1569 1569 } … … 1574 1574 1575 1575 errno_t rc = nic_iface->set_operation_mode(dev, speed, duplex, role); 1576 async_answer_0(c handle, rc);1576 async_answer_0(call, rc); 1577 1577 } 1578 1578 1579 1579 static void remote_nic_autoneg_enable(ddf_fun_t *dev, void *iface, 1580 cap_call_handle_t chandle,ipc_call_t *call)1580 ipc_call_t *call) 1581 1581 { 1582 1582 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1583 1583 if (nic_iface->autoneg_enable == NULL) { 1584 async_answer_0(c handle, ENOTSUP);1584 async_answer_0(call, ENOTSUP); 1585 1585 return; 1586 1586 } … … 1589 1589 1590 1590 errno_t rc = nic_iface->autoneg_enable(dev, advertisement); 1591 async_answer_0(c handle, rc);1591 async_answer_0(call, rc); 1592 1592 } 1593 1593 1594 1594 static void remote_nic_autoneg_disable(ddf_fun_t *dev, void *iface, 1595 cap_call_handle_t chandle,ipc_call_t *call)1595 ipc_call_t *call) 1596 1596 { 1597 1597 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1598 1598 if (nic_iface->autoneg_disable == NULL) { 1599 async_answer_0(c handle, ENOTSUP);1599 async_answer_0(call, ENOTSUP); 1600 1600 return; 1601 1601 } 1602 1602 1603 1603 errno_t rc = nic_iface->autoneg_disable(dev); 1604 async_answer_0(c handle, rc);1604 async_answer_0(call, rc); 1605 1605 } 1606 1606 1607 1607 static void remote_nic_autoneg_probe(ddf_fun_t *dev, void *iface, 1608 cap_call_handle_t chandle,ipc_call_t *call)1608 ipc_call_t *call) 1609 1609 { 1610 1610 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1611 1611 if (nic_iface->autoneg_probe == NULL) { 1612 async_answer_0(c handle, ENOTSUP);1612 async_answer_0(call, ENOTSUP); 1613 1613 return; 1614 1614 } … … 1621 1621 errno_t rc = nic_iface->autoneg_probe(dev, &our_adv, &their_adv, &result, 1622 1622 &their_result); 1623 async_answer_4(c handle, rc, our_adv, their_adv, (sysarg_t) result,1623 async_answer_4(call, rc, our_adv, their_adv, (sysarg_t) result, 1624 1624 (sysarg_t) their_result); 1625 1625 } 1626 1626 1627 1627 static void remote_nic_autoneg_restart(ddf_fun_t *dev, void *iface, 1628 cap_call_handle_t chandle,ipc_call_t *call)1628 ipc_call_t *call) 1629 1629 { 1630 1630 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1631 1631 if (nic_iface->autoneg_restart == NULL) { 1632 async_answer_0(c handle, ENOTSUP);1632 async_answer_0(call, ENOTSUP); 1633 1633 return; 1634 1634 } 1635 1635 1636 1636 errno_t rc = nic_iface->autoneg_restart(dev); 1637 async_answer_0(c handle, rc);1637 async_answer_0(call, rc); 1638 1638 } 1639 1639 1640 1640 static void remote_nic_get_pause(ddf_fun_t *dev, void *iface, 1641 cap_call_handle_t chandle,ipc_call_t *call)1641 ipc_call_t *call) 1642 1642 { 1643 1643 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1644 1644 if (nic_iface->get_pause == NULL) { 1645 async_answer_0(c handle, ENOTSUP);1645 async_answer_0(call, ENOTSUP); 1646 1646 return; 1647 1647 } … … 1652 1652 1653 1653 errno_t rc = nic_iface->get_pause(dev, &we_send, &we_receive, &pause); 1654 async_answer_3(c handle, rc, we_send, we_receive, pause);1654 async_answer_3(call, rc, we_send, we_receive, pause); 1655 1655 } 1656 1656 1657 1657 static void remote_nic_set_pause(ddf_fun_t *dev, void *iface, 1658 cap_call_handle_t chandle,ipc_call_t *call)1658 ipc_call_t *call) 1659 1659 { 1660 1660 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1661 1661 if (nic_iface->set_pause == NULL) { 1662 async_answer_0(c handle, ENOTSUP);1662 async_answer_0(call, ENOTSUP); 1663 1663 return; 1664 1664 } … … 1670 1670 errno_t rc = nic_iface->set_pause(dev, allow_send, allow_receive, 1671 1671 pause); 1672 async_answer_0(c handle, rc);1672 async_answer_0(call, rc); 1673 1673 } 1674 1674 1675 1675 static void remote_nic_unicast_get_mode(ddf_fun_t *dev, void *iface, 1676 cap_call_handle_t chandle,ipc_call_t *call)1676 ipc_call_t *call) 1677 1677 { 1678 1678 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1679 1679 if (nic_iface->unicast_get_mode == NULL) { 1680 async_answer_0(c handle, ENOTSUP);1680 async_answer_0(call, ENOTSUP); 1681 1681 return; 1682 1682 } … … 1688 1688 address_list = malloc(max_count * sizeof (nic_address_t)); 1689 1689 if (!address_list) { 1690 async_answer_0(c handle, ENOMEM);1690 async_answer_0(call, ENOMEM); 1691 1691 return; 1692 1692 } … … 1702 1702 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1703 1703 free(address_list); 1704 async_answer_2(c handle, rc, mode, address_count);1705 return; 1706 } 1707 1708 cap_call_handle_t data_chandle;1704 async_answer_2(call, rc, mode, address_count); 1705 return; 1706 } 1707 1708 ipc_call_t data; 1709 1709 size_t max_len; 1710 if (!async_data_read_receive(&data _chandle, &max_len)) {1711 async_answer_0( data_chandle, EINVAL);1712 async_answer_2(c handle, rc, mode, address_count);1710 if (!async_data_read_receive(&data, &max_len)) { 1711 async_answer_0(&data, EINVAL); 1712 async_answer_2(call, rc, mode, address_count); 1713 1713 free(address_list); 1714 1714 return; … … 1721 1721 max_len = max_count * sizeof(nic_address_t); 1722 1722 1723 async_data_read_finalize(data_chandle, address_list, max_len); 1724 async_answer_0(data_chandle, EINVAL); 1723 async_data_read_finalize(&data, address_list, max_len); 1725 1724 1726 1725 free(address_list); 1727 async_answer_2(c handle, rc, mode, address_count);1726 async_answer_2(call, rc, mode, address_count); 1728 1727 } 1729 1728 1730 1729 static void remote_nic_unicast_set_mode(ddf_fun_t *dev, void *iface, 1731 cap_call_handle_t chandle,ipc_call_t *call)1730 ipc_call_t *call) 1732 1731 { 1733 1732 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1739 1738 1740 1739 if (address_count) { 1741 cap_call_handle_t data_chandle;1742 if (!async_data_write_receive(&data _chandle, &length)) {1743 async_answer_0( data_chandle, EINVAL);1744 async_answer_0(c handle, EINVAL);1740 ipc_call_t data; 1741 if (!async_data_write_receive(&data, &length)) { 1742 async_answer_0(&data, EINVAL); 1743 async_answer_0(call, EINVAL); 1745 1744 return; 1746 1745 } 1747 1746 1748 1747 if (length != address_count * sizeof(nic_address_t)) { 1749 async_answer_0( data_chandle, ELIMIT);1750 async_answer_0(c handle, ELIMIT);1748 async_answer_0(&data, ELIMIT); 1749 async_answer_0(call, ELIMIT); 1751 1750 return; 1752 1751 } … … 1754 1753 address_list = malloc(length); 1755 1754 if (address_list == NULL) { 1756 async_answer_0( data_chandle, ENOMEM);1757 async_answer_0(c handle, ENOMEM);1758 return; 1759 } 1760 1761 if (async_data_write_finalize( data_chandle, address_list,1755 async_answer_0(&data, ENOMEM); 1756 async_answer_0(call, ENOMEM); 1757 return; 1758 } 1759 1760 if (async_data_write_finalize(&data, address_list, 1762 1761 length) != EOK) { 1763 async_answer_0(c handle, EINVAL);1762 async_answer_0(call, EINVAL); 1764 1763 free(address_list); 1765 1764 return; … … 1770 1769 errno_t rc = nic_iface->unicast_set_mode(dev, mode, address_list, 1771 1770 address_count); 1772 async_answer_0(c handle, rc);1771 async_answer_0(call, rc); 1773 1772 } else 1774 async_answer_0(c handle, ENOTSUP);1773 async_answer_0(call, ENOTSUP); 1775 1774 1776 1775 free(address_list); … … 1778 1777 1779 1778 static void remote_nic_multicast_get_mode(ddf_fun_t *dev, void *iface, 1780 cap_call_handle_t chandle,ipc_call_t *call)1779 ipc_call_t *call) 1781 1780 { 1782 1781 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1783 1782 if (nic_iface->multicast_get_mode == NULL) { 1784 async_answer_0(c handle, ENOTSUP);1783 async_answer_0(call, ENOTSUP); 1785 1784 return; 1786 1785 } … … 1792 1791 address_list = malloc(max_count * sizeof(nic_address_t)); 1793 1792 if (!address_list) { 1794 async_answer_0(c handle, ENOMEM);1793 async_answer_0(call, ENOMEM); 1795 1794 return; 1796 1795 } … … 1807 1806 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1808 1807 free(address_list); 1809 async_answer_2(c handle, rc, mode, address_count);1810 return; 1811 } 1812 1813 cap_call_handle_t data_chandle;1808 async_answer_2(call, rc, mode, address_count); 1809 return; 1810 } 1811 1812 ipc_call_t data; 1814 1813 size_t max_len; 1815 if (!async_data_read_receive(&data _chandle, &max_len)) {1816 async_answer_0( data_chandle, EINVAL);1817 async_answer_2(c handle, rc, mode, address_count);1814 if (!async_data_read_receive(&data, &max_len)) { 1815 async_answer_0(&data, EINVAL); 1816 async_answer_2(call, rc, mode, address_count); 1818 1817 free(address_list); 1819 1818 return; … … 1826 1825 max_len = max_count * sizeof(nic_address_t); 1827 1826 1828 async_data_read_finalize( data_chandle, address_list, max_len);1827 async_data_read_finalize(&data, address_list, max_len); 1829 1828 1830 1829 free(address_list); 1831 async_answer_2(c handle, rc, mode, address_count);1830 async_answer_2(call, rc, mode, address_count); 1832 1831 } 1833 1832 1834 1833 static void remote_nic_multicast_set_mode(ddf_fun_t *dev, void *iface, 1835 cap_call_handle_t chandle,ipc_call_t *call)1834 ipc_call_t *call) 1836 1835 { 1837 1836 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 1842 1841 1843 1842 if (address_count) { 1844 cap_call_handle_t data_chandle;1843 ipc_call_t data; 1845 1844 size_t length; 1846 if (!async_data_write_receive(&data _chandle, &length)) {1847 async_answer_0( data_chandle, EINVAL);1848 async_answer_0(c handle, EINVAL);1845 if (!async_data_write_receive(&data, &length)) { 1846 async_answer_0(&data, EINVAL); 1847 async_answer_0(call, EINVAL); 1849 1848 return; 1850 1849 } 1851 1850 1852 1851 if (length != address_count * sizeof (nic_address_t)) { 1853 async_answer_0( data_chandle, ELIMIT);1854 async_answer_0(c handle, ELIMIT);1852 async_answer_0(&data, ELIMIT); 1853 async_answer_0(call, ELIMIT); 1855 1854 return; 1856 1855 } … … 1858 1857 address_list = malloc(length); 1859 1858 if (address_list == NULL) { 1860 async_answer_0( data_chandle, ENOMEM);1861 async_answer_0(c handle, ENOMEM);1862 return; 1863 } 1864 1865 if (async_data_write_finalize( data_chandle, address_list,1859 async_answer_0(&data, ENOMEM); 1860 async_answer_0(call, ENOMEM); 1861 return; 1862 } 1863 1864 if (async_data_write_finalize(&data, address_list, 1866 1865 length) != EOK) { 1867 async_answer_0(c handle, EINVAL);1866 async_answer_0(call, EINVAL); 1868 1867 free(address_list); 1869 1868 return; … … 1874 1873 errno_t rc = nic_iface->multicast_set_mode(dev, mode, address_list, 1875 1874 address_count); 1876 async_answer_0(c handle, rc);1875 async_answer_0(call, rc); 1877 1876 } else 1878 async_answer_0(c handle, ENOTSUP);1877 async_answer_0(call, ENOTSUP); 1879 1878 1880 1879 free(address_list); … … 1882 1881 1883 1882 static void remote_nic_broadcast_get_mode(ddf_fun_t *dev, void *iface, 1884 cap_call_handle_t chandle,ipc_call_t *call)1883 ipc_call_t *call) 1885 1884 { 1886 1885 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1887 1886 if (nic_iface->broadcast_get_mode == NULL) { 1888 async_answer_0(c handle, ENOTSUP);1887 async_answer_0(call, ENOTSUP); 1889 1888 return; 1890 1889 } … … 1893 1892 1894 1893 errno_t rc = nic_iface->broadcast_get_mode(dev, &mode); 1895 async_answer_1(c handle, rc, mode);1894 async_answer_1(call, rc, mode); 1896 1895 } 1897 1896 1898 1897 static void remote_nic_broadcast_set_mode(ddf_fun_t *dev, void *iface, 1899 cap_call_handle_t chandle,ipc_call_t *call)1898 ipc_call_t *call) 1900 1899 { 1901 1900 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1902 1901 if (nic_iface->broadcast_set_mode == NULL) { 1903 async_answer_0(c handle, ENOTSUP);1902 async_answer_0(call, ENOTSUP); 1904 1903 return; 1905 1904 } … … 1908 1907 1909 1908 errno_t rc = nic_iface->broadcast_set_mode(dev, mode); 1910 async_answer_0(c handle, rc);1909 async_answer_0(call, rc); 1911 1910 } 1912 1911 1913 1912 static void remote_nic_defective_get_mode(ddf_fun_t *dev, void *iface, 1914 cap_call_handle_t chandle,ipc_call_t *call)1913 ipc_call_t *call) 1915 1914 { 1916 1915 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1917 1916 if (nic_iface->defective_get_mode == NULL) { 1918 async_answer_0(c handle, ENOTSUP);1917 async_answer_0(call, ENOTSUP); 1919 1918 return; 1920 1919 } … … 1923 1922 1924 1923 errno_t rc = nic_iface->defective_get_mode(dev, &mode); 1925 async_answer_1(c handle, rc, mode);1924 async_answer_1(call, rc, mode); 1926 1925 } 1927 1926 1928 1927 static void remote_nic_defective_set_mode(ddf_fun_t *dev, void *iface, 1929 cap_call_handle_t chandle,ipc_call_t *call)1928 ipc_call_t *call) 1930 1929 { 1931 1930 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1932 1931 if (nic_iface->defective_set_mode == NULL) { 1933 async_answer_0(c handle, ENOTSUP);1932 async_answer_0(call, ENOTSUP); 1934 1933 return; 1935 1934 } … … 1938 1937 1939 1938 errno_t rc = nic_iface->defective_set_mode(dev, mode); 1940 async_answer_0(c handle, rc);1939 async_answer_0(call, rc); 1941 1940 } 1942 1941 1943 1942 static void remote_nic_blocked_sources_get(ddf_fun_t *dev, void *iface, 1944 cap_call_handle_t chandle,ipc_call_t *call)1943 ipc_call_t *call) 1945 1944 { 1946 1945 nic_iface_t *nic_iface = (nic_iface_t *) iface; 1947 1946 if (nic_iface->blocked_sources_get == NULL) { 1948 async_answer_0(c handle, ENOTSUP);1947 async_answer_0(call, ENOTSUP); 1949 1948 return; 1950 1949 } … … 1956 1955 address_list = malloc(max_count * sizeof(nic_address_t)); 1957 1956 if (!address_list) { 1958 async_answer_0(c handle, ENOMEM);1957 async_answer_0(call, ENOMEM); 1959 1958 return; 1960 1959 } … … 1968 1967 1969 1968 if ((rc != EOK) || (max_count == 0) || (address_count == 0)) { 1970 async_answer_1(c handle, rc, address_count);1969 async_answer_1(call, rc, address_count); 1971 1970 free(address_list); 1972 1971 return; 1973 1972 } 1974 1973 1975 cap_call_handle_t data_chandle;1974 ipc_call_t data; 1976 1975 size_t max_len; 1977 if (!async_data_read_receive(&data _chandle, &max_len)) {1978 async_answer_0( data_chandle, EINVAL);1979 async_answer_1(c handle, rc, address_count);1976 if (!async_data_read_receive(&data, &max_len)) { 1977 async_answer_0(&data, EINVAL); 1978 async_answer_1(call, rc, address_count); 1980 1979 free(address_list); 1981 1980 return; … … 1988 1987 max_len = max_count * sizeof(nic_address_t); 1989 1988 1990 async_data_read_finalize(data_chandle, address_list, max_len); 1991 async_answer_0(data_chandle, EINVAL); 1989 async_data_read_finalize(&data, address_list, max_len); 1992 1990 1993 1991 free(address_list); 1994 async_answer_1(c handle, rc, address_count);1992 async_answer_1(call, rc, address_count); 1995 1993 } 1996 1994 1997 1995 static void remote_nic_blocked_sources_set(ddf_fun_t *dev, void *iface, 1998 cap_call_handle_t chandle,ipc_call_t *call)1996 ipc_call_t *call) 1999 1997 { 2000 1998 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2005 2003 2006 2004 if (address_count) { 2007 cap_call_handle_t data_chandle;2008 if (!async_data_write_receive(&data _chandle, &length)) {2009 async_answer_0( data_chandle, EINVAL);2010 async_answer_0(c handle, EINVAL);2005 ipc_call_t data; 2006 if (!async_data_write_receive(&data, &length)) { 2007 async_answer_0(&data, EINVAL); 2008 async_answer_0(call, EINVAL); 2011 2009 return; 2012 2010 } 2013 2011 2014 2012 if (length != address_count * sizeof(nic_address_t)) { 2015 async_answer_0( data_chandle, ELIMIT);2016 async_answer_0(c handle, ELIMIT);2013 async_answer_0(&data, ELIMIT); 2014 async_answer_0(call, ELIMIT); 2017 2015 return; 2018 2016 } … … 2020 2018 address_list = malloc(length); 2021 2019 if (address_list == NULL) { 2022 async_answer_0( data_chandle, ENOMEM);2023 async_answer_0(c handle, ENOMEM);2024 return; 2025 } 2026 2027 if (async_data_write_finalize( data_chandle, address_list,2020 async_answer_0(&data, ENOMEM); 2021 async_answer_0(call, ENOMEM); 2022 return; 2023 } 2024 2025 if (async_data_write_finalize(&data, address_list, 2028 2026 length) != EOK) { 2029 async_answer_0(c handle, EINVAL);2027 async_answer_0(call, EINVAL); 2030 2028 free(address_list); 2031 2029 return; … … 2036 2034 errno_t rc = nic_iface->blocked_sources_set(dev, address_list, 2037 2035 address_count); 2038 async_answer_0(c handle, rc);2036 async_answer_0(call, rc); 2039 2037 } else 2040 async_answer_0(c handle, ENOTSUP);2038 async_answer_0(call, ENOTSUP); 2041 2039 2042 2040 free(address_list); … … 2044 2042 2045 2043 static void remote_nic_vlan_get_mask(ddf_fun_t *dev, void *iface, 2046 cap_call_handle_t chandle,ipc_call_t *call)2044 ipc_call_t *call) 2047 2045 { 2048 2046 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2049 2047 if (nic_iface->vlan_get_mask == NULL) { 2050 async_answer_0(c handle, ENOTSUP);2048 async_answer_0(call, ENOTSUP); 2051 2049 return; 2052 2050 } … … 2057 2055 errno_t rc = nic_iface->vlan_get_mask(dev, &vlan_mask); 2058 2056 if (rc == EOK) { 2059 cap_call_handle_t data_chandle;2057 ipc_call_t data; 2060 2058 size_t max_len; 2061 if (!async_data_read_receive(&data _chandle, &max_len)) {2062 async_answer_0( data_chandle, EINVAL);2063 async_answer_0(c handle, EINVAL);2059 if (!async_data_read_receive(&data, &max_len)) { 2060 async_answer_0(&data, EINVAL); 2061 async_answer_0(call, EINVAL); 2064 2062 return; 2065 2063 } 2066 2064 2067 2065 if (max_len != sizeof(nic_vlan_mask_t)) { 2068 async_answer_0( data_chandle, EINVAL);2069 async_answer_0(c handle, EINVAL);2070 return; 2071 } 2072 2073 async_data_read_finalize( data_chandle, &vlan_mask, max_len);2074 } 2075 2076 async_answer_0(c handle, rc);2066 async_answer_0(&data, EINVAL); 2067 async_answer_0(call, EINVAL); 2068 return; 2069 } 2070 2071 async_data_read_finalize(&data, &vlan_mask, max_len); 2072 } 2073 2074 async_answer_0(call, rc); 2077 2075 } 2078 2076 2079 2077 static void remote_nic_vlan_set_mask(ddf_fun_t *dev, void *iface, 2080 cap_call_handle_t chandle,ipc_call_t *call)2078 ipc_call_t *call) 2081 2079 { 2082 2080 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2087 2085 2088 2086 if (vlan_mask_set) { 2089 cap_call_handle_t data_chandle;2087 ipc_call_t data; 2090 2088 size_t length; 2091 if (!async_data_write_receive(&data _chandle, &length)) {2092 async_answer_0( data_chandle, EINVAL);2093 async_answer_0(c handle, EINVAL);2089 if (!async_data_write_receive(&data, &length)) { 2090 async_answer_0(&data, EINVAL); 2091 async_answer_0(call, EINVAL); 2094 2092 return; 2095 2093 } 2096 2094 2097 2095 if (length != sizeof(nic_vlan_mask_t)) { 2098 async_answer_0( data_chandle, ELIMIT);2099 async_answer_0(c handle, ELIMIT);2100 return; 2101 } 2102 2103 if (async_data_write_finalize( data_chandle, &vlan_mask,2096 async_answer_0(&data, ELIMIT); 2097 async_answer_0(call, ELIMIT); 2098 return; 2099 } 2100 2101 if (async_data_write_finalize(&data, &vlan_mask, 2104 2102 length) != EOK) { 2105 async_answer_0(c handle, EINVAL);2103 async_answer_0(call, EINVAL); 2106 2104 return; 2107 2105 } … … 2112 2110 if (nic_iface->vlan_set_mask != NULL) { 2113 2111 errno_t rc = nic_iface->vlan_set_mask(dev, vlan_mask_pointer); 2114 async_answer_0(c handle, rc);2112 async_answer_0(call, rc); 2115 2113 } else 2116 async_answer_0(c handle, ENOTSUP);2114 async_answer_0(call, ENOTSUP); 2117 2115 } 2118 2116 2119 2117 static void remote_nic_vlan_set_tag(ddf_fun_t *dev, void *iface, 2120 cap_call_handle_t chandle,ipc_call_t *call)2118 ipc_call_t *call) 2121 2119 { 2122 2120 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2123 2121 2124 2122 if (nic_iface->vlan_set_tag == NULL) { 2125 async_answer_0(c handle, ENOTSUP);2123 async_answer_0(call, ENOTSUP); 2126 2124 return; 2127 2125 } … … 2132 2130 2133 2131 errno_t rc = nic_iface->vlan_set_tag(dev, tag, add, strip); 2134 async_answer_0(c handle, rc);2132 async_answer_0(call, rc); 2135 2133 } 2136 2134 2137 2135 static void remote_nic_wol_virtue_add(ddf_fun_t *dev, void *iface, 2138 cap_call_handle_t chandle,ipc_call_t *call)2136 ipc_call_t *call) 2139 2137 { 2140 2138 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2141 2139 2142 2140 int send_data = (int) IPC_GET_ARG3(*call); 2143 cap_call_handle_t data_chandle;2141 ipc_call_t data; 2144 2142 2145 2143 if (nic_iface->wol_virtue_add == NULL) { 2146 2144 if (send_data) { 2147 async_data_write_receive(&data _chandle, NULL);2148 async_answer_0( data_chandle, ENOTSUP);2149 } 2150 2151 async_answer_0(c handle, ENOTSUP);2145 async_data_write_receive(&data, NULL); 2146 async_answer_0(&data, ENOTSUP); 2147 } 2148 2149 async_answer_0(call, ENOTSUP); 2152 2150 } 2153 2151 2154 2152 size_t length = 0; 2155 void * data= NULL;2153 void *virtue = NULL; 2156 2154 2157 2155 if (send_data) { 2158 if (!async_data_write_receive(&data _chandle, &length)) {2159 async_answer_0( data_chandle, EINVAL);2160 async_answer_0(c handle, EINVAL);2161 return; 2162 } 2163 2164 data= malloc(length);2165 if ( data== NULL) {2166 async_answer_0( data_chandle, ENOMEM);2167 async_answer_0(c handle, ENOMEM);2168 return; 2169 } 2170 2171 if (async_data_write_finalize( data_chandle, data,2156 if (!async_data_write_receive(&data, &length)) { 2157 async_answer_0(&data, EINVAL); 2158 async_answer_0(call, EINVAL); 2159 return; 2160 } 2161 2162 virtue = malloc(length); 2163 if (virtue == NULL) { 2164 async_answer_0(&data, ENOMEM); 2165 async_answer_0(call, ENOMEM); 2166 return; 2167 } 2168 2169 if (async_data_write_finalize(&data, virtue, 2172 2170 length) != EOK) { 2173 async_answer_0(c handle, EINVAL);2174 free( data);2171 async_answer_0(call, EINVAL); 2172 free(virtue); 2175 2173 return; 2176 2174 } … … 2180 2178 nic_wv_type_t type = (nic_wv_type_t) IPC_GET_ARG2(*call); 2181 2179 2182 errno_t rc = nic_iface->wol_virtue_add(dev, type, data, length, &id);2183 async_answer_1(c handle, rc, (sysarg_t) id);2184 free( data);2180 errno_t rc = nic_iface->wol_virtue_add(dev, type, virtue, length, &id); 2181 async_answer_1(call, rc, (sysarg_t) id); 2182 free(virtue); 2185 2183 } 2186 2184 2187 2185 static void remote_nic_wol_virtue_remove(ddf_fun_t *dev, void *iface, 2188 cap_call_handle_t chandle,ipc_call_t *call)2186 ipc_call_t *call) 2189 2187 { 2190 2188 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2191 2189 2192 2190 if (nic_iface->wol_virtue_remove == NULL) { 2193 async_answer_0(c handle, ENOTSUP);2191 async_answer_0(call, ENOTSUP); 2194 2192 return; 2195 2193 } … … 2198 2196 2199 2197 errno_t rc = nic_iface->wol_virtue_remove(dev, id); 2200 async_answer_0(c handle, rc);2198 async_answer_0(call, rc); 2201 2199 } 2202 2200 2203 2201 static void remote_nic_wol_virtue_probe(ddf_fun_t *dev, void *iface, 2204 cap_call_handle_t chandle,ipc_call_t *call)2202 ipc_call_t *call) 2205 2203 { 2206 2204 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2207 2205 2208 2206 if (nic_iface->wol_virtue_probe == NULL) { 2209 async_answer_0(c handle, ENOTSUP);2207 async_answer_0(call, ENOTSUP); 2210 2208 return; 2211 2209 } … … 2215 2213 nic_wv_type_t type = NIC_WV_NONE; 2216 2214 size_t length = 0; 2217 cap_call_handle_t data_chandle;2218 void * data= NULL;2215 ipc_call_t data; 2216 void *virtue = NULL; 2219 2217 2220 2218 if (max_length != 0) { 2221 data= malloc(max_length);2222 if ( data== NULL) {2223 async_answer_0(c handle, ENOMEM);2224 return; 2225 } 2226 } 2227 2228 memset( data, 0, max_length);2219 virtue = malloc(max_length); 2220 if (virtue == NULL) { 2221 async_answer_0(call, ENOMEM); 2222 return; 2223 } 2224 } 2225 2226 memset(virtue, 0, max_length); 2229 2227 2230 2228 errno_t rc = nic_iface->wol_virtue_probe(dev, id, &type, max_length, 2231 data, &length);2229 virtue, &length); 2232 2230 2233 2231 if ((max_length != 0) && (length != 0)) { 2234 2232 size_t req_length; 2235 if (!async_data_read_receive(&data _chandle, &req_length)) {2236 async_answer_0( data_chandle, EINVAL);2237 async_answer_0(c handle, EINVAL);2238 free( data);2233 if (!async_data_read_receive(&data, &req_length)) { 2234 async_answer_0(&data, EINVAL); 2235 async_answer_0(call, EINVAL); 2236 free(virtue); 2239 2237 return; 2240 2238 } … … 2246 2244 req_length = max_length; 2247 2245 2248 async_data_read_finalize( data_chandle, data, req_length);2249 } 2250 2251 async_answer_2(c handle, rc, (sysarg_t) type, (sysarg_t) length);2252 free( data);2246 async_data_read_finalize(&data, virtue, req_length); 2247 } 2248 2249 async_answer_2(call, rc, (sysarg_t) type, (sysarg_t) length); 2250 free(virtue); 2253 2251 } 2254 2252 2255 2253 static void remote_nic_wol_virtue_list(ddf_fun_t *dev, void *iface, 2256 cap_call_handle_t chandle,ipc_call_t *call)2254 ipc_call_t *call) 2257 2255 { 2258 2256 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2259 2257 if (nic_iface->wol_virtue_list == NULL) { 2260 async_answer_0(c handle, ENOTSUP);2258 async_answer_0(call, ENOTSUP); 2261 2259 return; 2262 2260 } … … 2266 2264 size_t count = 0; 2267 2265 nic_wv_id_t *id_list = NULL; 2268 cap_call_handle_t data_chandle;2266 ipc_call_t data; 2269 2267 2270 2268 if (max_count != 0) { 2271 2269 id_list = malloc(max_count * sizeof(nic_wv_id_t)); 2272 2270 if (id_list == NULL) { 2273 async_answer_0(c handle, ENOMEM);2271 async_answer_0(call, ENOMEM); 2274 2272 return; 2275 2273 } … … 2283 2281 if ((max_count != 0) && (count != 0)) { 2284 2282 size_t req_length; 2285 if (!async_data_read_receive(&data _chandle, &req_length)) {2286 async_answer_0( data_chandle, EINVAL);2287 async_answer_0(c handle, EINVAL);2283 if (!async_data_read_receive(&data, &req_length)) { 2284 async_answer_0(&data, EINVAL); 2285 async_answer_0(call, EINVAL); 2288 2286 free(id_list); 2289 2287 return; … … 2296 2294 req_length = max_count * sizeof(nic_wv_id_t); 2297 2295 2298 rc = async_data_read_finalize( data_chandle, id_list, req_length);2299 } 2300 2301 async_answer_1(c handle, rc, (sysarg_t) count);2296 rc = async_data_read_finalize(&data, id_list, req_length); 2297 } 2298 2299 async_answer_1(call, rc, (sysarg_t) count); 2302 2300 free(id_list); 2303 2301 } 2304 2302 2305 2303 static void remote_nic_wol_virtue_get_caps(ddf_fun_t *dev, void *iface, 2306 cap_call_handle_t chandle,ipc_call_t *call)2304 ipc_call_t *call) 2307 2305 { 2308 2306 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2309 2307 if (nic_iface->wol_virtue_get_caps == NULL) { 2310 async_answer_0(c handle, ENOTSUP);2308 async_answer_0(call, ENOTSUP); 2311 2309 return; 2312 2310 } … … 2316 2314 2317 2315 errno_t rc = nic_iface->wol_virtue_get_caps(dev, type, &count); 2318 async_answer_1(c handle, rc, (sysarg_t) count);2316 async_answer_1(call, rc, (sysarg_t) count); 2319 2317 } 2320 2318 2321 2319 static void remote_nic_wol_load_info(ddf_fun_t *dev, void *iface, 2322 cap_call_handle_t chandle,ipc_call_t *call)2320 ipc_call_t *call) 2323 2321 { 2324 2322 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2325 2323 if (nic_iface->wol_load_info == NULL) { 2326 async_answer_0(c handle, ENOTSUP);2324 async_answer_0(call, ENOTSUP); 2327 2325 return; 2328 2326 } … … 2331 2329 size_t frame_length = 0; 2332 2330 nic_wv_type_t type = NIC_WV_NONE; 2333 uint8_t * data= NULL;2331 uint8_t *info = NULL; 2334 2332 2335 2333 if (max_length != 0) { 2336 data= malloc(max_length);2337 if ( data== NULL) {2338 async_answer_0(c handle, ENOMEM);2339 return; 2340 } 2341 } 2342 2343 memset( data, 0, max_length);2344 2345 errno_t rc = nic_iface->wol_load_info(dev, &type, max_length, data,2334 info = malloc(max_length); 2335 if (info == NULL) { 2336 async_answer_0(call, ENOMEM); 2337 return; 2338 } 2339 } 2340 2341 memset(info, 0, max_length); 2342 2343 errno_t rc = nic_iface->wol_load_info(dev, &type, max_length, info, 2346 2344 &frame_length); 2347 2345 if (rc == EOK) { 2348 cap_call_handle_t data_chandle;2346 ipc_call_t data; 2349 2347 size_t req_length; 2350 if (!async_data_read_receive(&data _chandle, &req_length)) {2351 async_answer_0( data_chandle, EINVAL);2352 async_answer_0(c handle, EINVAL);2353 free( data);2348 if (!async_data_read_receive(&data, &req_length)) { 2349 async_answer_0(&data, EINVAL); 2350 async_answer_0(call, EINVAL); 2351 free(info); 2354 2352 return; 2355 2353 } … … 2357 2355 req_length = req_length > max_length ? max_length : req_length; 2358 2356 req_length = req_length > frame_length ? frame_length : req_length; 2359 async_data_read_finalize( data_chandle, data, req_length);2360 } 2361 2362 async_answer_2(c handle, rc, (sysarg_t) type, (sysarg_t) frame_length);2363 free( data);2357 async_data_read_finalize(&data, info, req_length); 2358 } 2359 2360 async_answer_2(call, rc, (sysarg_t) type, (sysarg_t) frame_length); 2361 free(info); 2364 2362 } 2365 2363 2366 2364 static void remote_nic_offload_probe(ddf_fun_t *dev, void *iface, 2367 cap_call_handle_t chandle,ipc_call_t *call)2365 ipc_call_t *call) 2368 2366 { 2369 2367 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2370 2368 if (nic_iface->offload_probe == NULL) { 2371 async_answer_0(c handle, ENOTSUP);2369 async_answer_0(call, ENOTSUP); 2372 2370 return; 2373 2371 } … … 2377 2375 2378 2376 errno_t rc = nic_iface->offload_probe(dev, &supported, &active); 2379 async_answer_2(c handle, rc, supported, active);2377 async_answer_2(call, rc, supported, active); 2380 2378 } 2381 2379 2382 2380 static void remote_nic_offload_set(ddf_fun_t *dev, void *iface, 2383 cap_call_handle_t chandle,ipc_call_t *call)2381 ipc_call_t *call) 2384 2382 { 2385 2383 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2386 2384 if (nic_iface->offload_set == NULL) { 2387 async_answer_0(c handle, ENOTSUP);2385 async_answer_0(call, ENOTSUP); 2388 2386 return; 2389 2387 } … … 2393 2391 2394 2392 errno_t rc = nic_iface->offload_set(dev, mask, active); 2395 async_answer_0(c handle, rc);2393 async_answer_0(call, rc); 2396 2394 } 2397 2395 2398 2396 static void remote_nic_poll_get_mode(ddf_fun_t *dev, void *iface, 2399 cap_call_handle_t chandle,ipc_call_t *call)2397 ipc_call_t *call) 2400 2398 { 2401 2399 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2402 2400 if (nic_iface->poll_get_mode == NULL) { 2403 async_answer_0(c handle, ENOTSUP);2401 async_answer_0(call, ENOTSUP); 2404 2402 return; 2405 2403 } … … 2414 2412 errno_t rc = nic_iface->poll_get_mode(dev, &mode, &period); 2415 2413 if ((rc == EOK) && (request_data)) { 2414 ipc_call_t data; 2416 2415 size_t max_len; 2417 cap_call_handle_t data_chandle; 2418 2419 if (!async_data_read_receive(&data_chandle, &max_len)) { 2420 async_answer_0(data_chandle, EINVAL); 2421 async_answer_0(chandle, EINVAL); 2416 2417 if (!async_data_read_receive(&data, &max_len)) { 2418 async_answer_0(&data, EINVAL); 2419 async_answer_0(call, EINVAL); 2422 2420 return; 2423 2421 } 2424 2422 2425 2423 if (max_len != sizeof(struct timeval)) { 2426 async_answer_0( data_chandle, ELIMIT);2427 async_answer_0(c handle, ELIMIT);2428 return; 2429 } 2430 2431 async_data_read_finalize( data_chandle, &period,2424 async_answer_0(&data, ELIMIT); 2425 async_answer_0(call, ELIMIT); 2426 return; 2427 } 2428 2429 async_data_read_finalize(&data, &period, 2432 2430 sizeof(struct timeval)); 2433 2431 } 2434 2432 2435 async_answer_1(c handle, rc, (sysarg_t) mode);2433 async_answer_1(call, rc, (sysarg_t) mode); 2436 2434 } 2437 2435 2438 2436 static void remote_nic_poll_set_mode(ddf_fun_t *dev, void *iface, 2439 cap_call_handle_t chandle,ipc_call_t *call)2437 ipc_call_t *call) 2440 2438 { 2441 2439 nic_iface_t *nic_iface = (nic_iface_t *) iface; … … 2448 2446 2449 2447 if (has_period) { 2450 cap_call_handle_t data_chandle;2451 if (!async_data_write_receive(&data _chandle, &length)) {2452 async_answer_0( data_chandle, EINVAL);2453 async_answer_0(c handle, EINVAL);2448 ipc_call_t data; 2449 if (!async_data_write_receive(&data, &length)) { 2450 async_answer_0(&data, EINVAL); 2451 async_answer_0(call, EINVAL); 2454 2452 return; 2455 2453 } 2456 2454 2457 2455 if (length != sizeof(struct timeval)) { 2458 async_answer_0( data_chandle, ELIMIT);2459 async_answer_0(c handle, ELIMIT);2456 async_answer_0(&data, ELIMIT); 2457 async_answer_0(call, ELIMIT); 2460 2458 return; 2461 2459 } 2462 2460 2463 2461 period = &period_buf; 2464 if (async_data_write_finalize( data_chandle, period,2462 if (async_data_write_finalize(&data, period, 2465 2463 length) != EOK) { 2466 async_answer_0(c handle, EINVAL);2464 async_answer_0(call, EINVAL); 2467 2465 return; 2468 2466 } … … 2471 2469 if (nic_iface->poll_set_mode != NULL) { 2472 2470 errno_t rc = nic_iface->poll_set_mode(dev, mode, period); 2473 async_answer_0(c handle, rc);2471 async_answer_0(call, rc); 2474 2472 } else 2475 async_answer_0(c handle, ENOTSUP);2473 async_answer_0(call, ENOTSUP); 2476 2474 } 2477 2475 2478 2476 static void remote_nic_poll_now(ddf_fun_t *dev, void *iface, 2479 cap_call_handle_t chandle,ipc_call_t *call)2477 ipc_call_t *call) 2480 2478 { 2481 2479 nic_iface_t *nic_iface = (nic_iface_t *) iface; 2482 2480 if (nic_iface->poll_now == NULL) { 2483 async_answer_0(c handle, ENOTSUP);2481 async_answer_0(call, ENOTSUP); 2484 2482 return; 2485 2483 } 2486 2484 2487 2485 errno_t rc = nic_iface->poll_now(dev); 2488 async_answer_0(c handle, rc);2486 async_answer_0(call, rc); 2489 2487 } 2490 2488 -
uspace/lib/drv/generic/remote_pci.c
r76f566d r984a9ba 124 124 } 125 125 126 static void remote_config_space_read_8(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);127 static void remote_config_space_read_16(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);128 static void remote_config_space_read_32(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);129 130 static void remote_config_space_write_8(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);131 static void remote_config_space_write_16(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);132 static void remote_config_space_write_32(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);126 static void remote_config_space_read_8(ddf_fun_t *, void *, ipc_call_t *); 127 static void remote_config_space_read_16(ddf_fun_t *, void *, ipc_call_t *); 128 static void remote_config_space_read_32(ddf_fun_t *, void *, ipc_call_t *); 129 130 static void remote_config_space_write_8(ddf_fun_t *, void *, ipc_call_t *); 131 static void remote_config_space_write_16(ddf_fun_t *, void *, ipc_call_t *); 132 static void remote_config_space_write_32(ddf_fun_t *, void *, ipc_call_t *); 133 133 134 134 /** Remote USB interface operations. */ … … 150 150 }; 151 151 152 void remote_config_space_read_8(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)152 void remote_config_space_read_8(ddf_fun_t *fun, void *iface, ipc_call_t *call) 153 153 { 154 154 assert(iface); 155 155 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 156 156 if (pci_iface->config_space_read_8 == NULL) { 157 async_answer_0(c handle, ENOTSUP);157 async_answer_0(call, ENOTSUP); 158 158 return; 159 159 } … … 162 162 errno_t ret = pci_iface->config_space_read_8(fun, address, &value); 163 163 if (ret != EOK) { 164 async_answer_0(c handle, ret);165 } else { 166 async_answer_1(c handle, EOK, value);167 } 168 } 169 170 void remote_config_space_read_16(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)164 async_answer_0(call, ret); 165 } else { 166 async_answer_1(call, EOK, value); 167 } 168 } 169 170 void remote_config_space_read_16(ddf_fun_t *fun, void *iface, ipc_call_t *call) 171 171 { 172 172 assert(iface); 173 173 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 174 174 if (pci_iface->config_space_read_16 == NULL) { 175 async_answer_0(c handle, ENOTSUP);175 async_answer_0(call, ENOTSUP); 176 176 return; 177 177 } … … 180 180 errno_t ret = pci_iface->config_space_read_16(fun, address, &value); 181 181 if (ret != EOK) { 182 async_answer_0(c handle, ret);183 } else { 184 async_answer_1(c handle, EOK, value);185 } 186 } 187 void remote_config_space_read_32(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)182 async_answer_0(call, ret); 183 } else { 184 async_answer_1(call, EOK, value); 185 } 186 } 187 void remote_config_space_read_32(ddf_fun_t *fun, void *iface, ipc_call_t *call) 188 188 { 189 189 assert(iface); 190 190 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 191 191 if (pci_iface->config_space_read_32 == NULL) { 192 async_answer_0(c handle, ENOTSUP);192 async_answer_0(call, ENOTSUP); 193 193 return; 194 194 } … … 197 197 errno_t ret = pci_iface->config_space_read_32(fun, address, &value); 198 198 if (ret != EOK) { 199 async_answer_0(c handle, ret);200 } else { 201 async_answer_1(c handle, EOK, value);202 } 203 } 204 205 void remote_config_space_write_8(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)199 async_answer_0(call, ret); 200 } else { 201 async_answer_1(call, EOK, value); 202 } 203 } 204 205 void remote_config_space_write_8(ddf_fun_t *fun, void *iface, ipc_call_t *call) 206 206 { 207 207 assert(iface); 208 208 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 209 209 if (pci_iface->config_space_write_8 == NULL) { 210 async_answer_0(c handle, ENOTSUP);210 async_answer_0(call, ENOTSUP); 211 211 return; 212 212 } … … 215 215 errno_t ret = pci_iface->config_space_write_8(fun, address, value); 216 216 if (ret != EOK) { 217 async_answer_0(c handle, ret);218 } else { 219 async_answer_0(c handle, EOK);220 } 221 } 222 223 void remote_config_space_write_16(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)217 async_answer_0(call, ret); 218 } else { 219 async_answer_0(call, EOK); 220 } 221 } 222 223 void remote_config_space_write_16(ddf_fun_t *fun, void *iface, ipc_call_t *call) 224 224 { 225 225 assert(iface); 226 226 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 227 227 if (pci_iface->config_space_write_16 == NULL) { 228 async_answer_0(c handle, ENOTSUP);228 async_answer_0(call, ENOTSUP); 229 229 return; 230 230 } … … 233 233 errno_t ret = pci_iface->config_space_write_16(fun, address, value); 234 234 if (ret != EOK) { 235 async_answer_0(c handle, ret);236 } else { 237 async_answer_0(c handle, EOK);238 } 239 } 240 241 void remote_config_space_write_32(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)235 async_answer_0(call, ret); 236 } else { 237 async_answer_0(call, EOK); 238 } 239 } 240 241 void remote_config_space_write_32(ddf_fun_t *fun, void *iface, ipc_call_t *call) 242 242 { 243 243 assert(iface); 244 244 pci_dev_iface_t *pci_iface = (pci_dev_iface_t *)iface; 245 245 if (pci_iface->config_space_write_32 == NULL) { 246 async_answer_0(c handle, ENOTSUP);246 async_answer_0(call, ENOTSUP); 247 247 return; 248 248 } … … 251 251 errno_t ret = pci_iface->config_space_write_32(fun, address, value); 252 252 if (ret != EOK) { 253 async_answer_0(chandle, ret); 254 } else { 255 async_answer_0(chandle, EOK); 256 } 257 } 258 253 async_answer_0(call, ret); 254 } else { 255 async_answer_0(call, EOK); 256 } 257 } 259 258 260 259 /** 261 260 * @} 262 261 */ 263 -
uspace/lib/drv/generic/remote_pio_window.c
r76f566d r984a9ba 40 40 #include "ddf/driver.h" 41 41 42 static void remote_pio_window_get(ddf_fun_t *, void *, cap_call_handle_t, 43 ipc_call_t *); 42 static void remote_pio_window_get(ddf_fun_t *, void *, ipc_call_t *); 44 43 45 44 static const remote_iface_func_ptr_t remote_pio_window_iface_ops [] = { … … 53 52 54 53 static void remote_pio_window_get(ddf_fun_t *fun, void *ops, 55 cap_call_handle_t chandle,ipc_call_t *call)54 ipc_call_t *call) 56 55 { 57 56 pio_window_ops_t *pio_win_ops = (pio_window_ops_t *) ops; 58 size_t len;59 57 60 58 if (!pio_win_ops->get_pio_window) { 61 async_answer_0(c handle, ENOTSUP);59 async_answer_0(call, ENOTSUP); 62 60 return; 63 61 } … … 65 63 pio_window_t *pio_window = pio_win_ops->get_pio_window(fun); 66 64 if (!pio_window) { 67 async_answer_0(c handle, ENOENT);65 async_answer_0(call, ENOENT); 68 66 return; 69 67 } 70 68 71 async_answer_0(c handle, EOK);69 async_answer_0(call, EOK); 72 70 73 if (!async_data_read_receive(&chandle, &len)) { 71 ipc_call_t data; 72 size_t len; 73 if (!async_data_read_receive(&data, &len)) { 74 74 /* Protocol error - the recipient is not accepting data */ 75 75 return; 76 76 } 77 77 78 async_data_read_finalize( chandle, pio_window, len);78 async_data_read_finalize(&data, pio_window, len); 79 79 } 80 80 -
uspace/lib/drv/generic/remote_usb.c
r76f566d r984a9ba 95 95 } 96 96 97 static void remote_usb_get_my_description(ddf_fun_t *, void *, 98 cap_call_handle_t, ipc_call_t *); 97 static void remote_usb_get_my_description(ddf_fun_t *, void *, ipc_call_t *); 99 98 100 99 /** Remote USB interface operations. */ … … 111 110 112 111 void remote_usb_get_my_description(ddf_fun_t *fun, void *iface, 113 cap_call_handle_t chandle,ipc_call_t *call)112 ipc_call_t *call) 114 113 { 115 114 const usb_iface_t *usb_iface = (usb_iface_t *) iface; 116 115 117 116 if (usb_iface->get_my_description == NULL) { 118 async_answer_0(c handle, ENOTSUP);117 async_answer_0(call, ENOTSUP); 119 118 return; 120 119 } … … 123 122 const errno_t ret = usb_iface->get_my_description(fun, &desc); 124 123 if (ret != EOK) { 125 async_answer_0(c handle, ret);124 async_answer_0(call, ret); 126 125 } else { 127 async_answer_5(c handle, EOK,126 async_answer_5(call, EOK, 128 127 (sysarg_t) desc.address, 129 128 (sysarg_t) desc.depth, -
uspace/lib/drv/generic/remote_usbdiag.c
r76f566d r984a9ba 126 126 } 127 127 128 static void remote_usbdiag_test_in(ddf_fun_t *, void *, 129 cap_call_handle_t, ipc_call_t *); 130 static void remote_usbdiag_test_out(ddf_fun_t *, void *, 131 cap_call_handle_t, ipc_call_t *); 128 static void remote_usbdiag_test_in(ddf_fun_t *, void *, ipc_call_t *); 129 static void remote_usbdiag_test_out(ddf_fun_t *, void *, ipc_call_t *); 132 130 133 131 /** Remote USB diagnostic interface operations. */ … … 143 141 }; 144 142 145 void remote_usbdiag_test_in(ddf_fun_t *fun, void *iface, 146 cap_call_handle_t chandle, ipc_call_t *call) 143 void remote_usbdiag_test_in(ddf_fun_t *fun, void *iface, ipc_call_t *call) 147 144 { 148 145 const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface; 149 146 147 ipc_call_t data; 150 148 size_t size; 151 cap_call_handle_t data_chandle; 152 if (!async_data_write_receive(&data_chandle, &size)) { 153 async_answer_0(data_chandle, EINVAL); 154 async_answer_0(chandle, EINVAL); 149 if (!async_data_write_receive(&data, &size)) { 150 async_answer_0(&data, EINVAL); 151 async_answer_0(call, EINVAL); 155 152 return; 156 153 } 157 154 158 155 if (size != sizeof(usbdiag_test_params_t)) { 159 async_answer_0( data_chandle, EINVAL);160 async_answer_0(c handle, EINVAL);156 async_answer_0(&data, EINVAL); 157 async_answer_0(call, EINVAL); 161 158 return; 162 159 } 163 160 164 161 usbdiag_test_params_t params; 165 if (async_data_write_finalize( data_chandle, ¶ms, size) != EOK) {166 async_answer_0(c handle, EINVAL);162 if (async_data_write_finalize(&data, ¶ms, size) != EOK) { 163 async_answer_0(call, EINVAL); 167 164 return; 168 165 } … … 173 170 174 171 if (ret != EOK) { 175 async_answer_0(c handle, ret);176 return; 177 } 178 179 if (!async_data_read_receive(&data _chandle, &size)) {180 async_answer_0( data_chandle, EINVAL);181 async_answer_0(c handle, EINVAL);172 async_answer_0(call, ret); 173 return; 174 } 175 176 if (!async_data_read_receive(&data, &size)) { 177 async_answer_0(&data, EINVAL); 178 async_answer_0(call, EINVAL); 182 179 return; 183 180 } 184 181 185 182 if (size != sizeof(usbdiag_test_results_t)) { 186 async_answer_0(data_chandle, EINVAL); 187 async_answer_0(chandle, EINVAL); 188 return; 189 } 190 191 if (async_data_read_finalize(data_chandle, &results, size) != EOK) { 192 async_answer_0(chandle, EINVAL); 193 return; 194 } 195 196 async_answer_0(chandle, ret); 197 } 198 199 void remote_usbdiag_test_out(ddf_fun_t *fun, void *iface, 200 cap_call_handle_t chandle, ipc_call_t *call) 183 async_answer_0(&data, EINVAL); 184 async_answer_0(call, EINVAL); 185 return; 186 } 187 188 if (async_data_read_finalize(&data, &results, size) != EOK) { 189 async_answer_0(call, EINVAL); 190 return; 191 } 192 193 async_answer_0(call, ret); 194 } 195 196 void remote_usbdiag_test_out(ddf_fun_t *fun, void *iface, ipc_call_t *call) 201 197 { 202 198 const usbdiag_iface_t *diag_iface = (usbdiag_iface_t *) iface; 203 199 200 ipc_call_t data; 204 201 size_t size; 205 cap_call_handle_t data_chandle; 206 if (!async_data_write_receive(&data_chandle, &size)) { 207 async_answer_0(data_chandle, EINVAL); 208 async_answer_0(chandle, EINVAL); 202 if (!async_data_write_receive(&data, &size)) { 203 async_answer_0(&data, EINVAL); 204 async_answer_0(call, EINVAL); 209 205 return; 210 206 } 211 207 212 208 if (size != sizeof(usbdiag_test_params_t)) { 213 async_answer_0( data_chandle, EINVAL);214 async_answer_0(c handle, EINVAL);209 async_answer_0(&data, EINVAL); 210 async_answer_0(call, EINVAL); 215 211 return; 216 212 } 217 213 218 214 usbdiag_test_params_t params; 219 if (async_data_write_finalize( data_chandle, ¶ms, size) != EOK) {220 async_answer_0(c handle, EINVAL);215 if (async_data_write_finalize(&data, ¶ms, size) != EOK) { 216 async_answer_0(call, EINVAL); 221 217 return; 222 218 } … … 227 223 228 224 if (ret != EOK) { 229 async_answer_0(c handle, ret);230 return; 231 } 232 233 if (!async_data_read_receive(&data _chandle, &size)) {234 async_answer_0( data_chandle, EINVAL);235 async_answer_0(c handle, EINVAL);225 async_answer_0(call, ret); 226 return; 227 } 228 229 if (!async_data_read_receive(&data, &size)) { 230 async_answer_0(&data, EINVAL); 231 async_answer_0(call, EINVAL); 236 232 return; 237 233 } 238 234 239 235 if (size != sizeof(usbdiag_test_results_t)) { 240 async_answer_0( data_chandle, EINVAL);241 async_answer_0(c handle, EINVAL);242 return; 243 } 244 245 if (async_data_read_finalize( data_chandle, &results, size) != EOK) {246 async_answer_0(c handle, EINVAL);247 return; 248 } 249 250 async_answer_0(c handle, ret);236 async_answer_0(&data, EINVAL); 237 async_answer_0(call, EINVAL); 238 return; 239 } 240 241 if (async_data_read_finalize(&data, &results, size) != EOK) { 242 async_answer_0(call, EINVAL); 243 return; 244 } 245 246 async_answer_0(call, ret); 251 247 } 252 248 -
uspace/lib/drv/generic/remote_usbhc.c
r76f566d r984a9ba 227 227 } 228 228 229 static void remote_usbhc_default_address_reservation(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);230 static void remote_usbhc_device_enumerate(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);231 static void remote_usbhc_device_remove(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);232 static void remote_usbhc_register_endpoint(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);233 static void remote_usbhc_unregister_endpoint(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);234 static void remote_usbhc_transfer(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call);229 static void remote_usbhc_default_address_reservation(ddf_fun_t *, void *, ipc_call_t *); 230 static void remote_usbhc_device_enumerate(ddf_fun_t *, void *, ipc_call_t *); 231 static void remote_usbhc_device_remove(ddf_fun_t *, void *, ipc_call_t *); 232 static void remote_usbhc_register_endpoint(ddf_fun_t *, void *, ipc_call_t *); 233 static void remote_usbhc_unregister_endpoint(ddf_fun_t *, void *, ipc_call_t *); 234 static void remote_usbhc_transfer(ddf_fun_t *fun, void *iface, ipc_call_t *call); 235 235 236 236 /** Remote USB interface operations. */ … … 252 252 253 253 typedef struct { 254 cap_call_handle_t caller;254 ipc_call_t call; 255 255 usbhc_iface_transfer_request_t request; 256 256 } async_transaction_t; 257 257 258 258 void remote_usbhc_default_address_reservation(ddf_fun_t *fun, void *iface, 259 cap_call_handle_t chandle,ipc_call_t *call)259 ipc_call_t *call) 260 260 { 261 261 const usbhc_iface_t *usbhc_iface = (usbhc_iface_t *) iface; 262 262 263 263 if (usbhc_iface->default_address_reservation == NULL) { 264 async_answer_0(c handle, ENOTSUP);264 async_answer_0(call, ENOTSUP); 265 265 return; 266 266 } … … 268 268 const bool reserve = IPC_GET_ARG2(*call); 269 269 const errno_t ret = usbhc_iface->default_address_reservation(fun, reserve); 270 async_answer_0(c handle, ret);270 async_answer_0(call, ret); 271 271 } 272 272 273 273 274 274 static void remote_usbhc_device_enumerate(ddf_fun_t *fun, void *iface, 275 cap_call_handle_t chandle,ipc_call_t *call)275 ipc_call_t *call) 276 276 { 277 277 const usbhc_iface_t *usbhc_iface = (usbhc_iface_t *) iface; 278 278 279 279 if (usbhc_iface->device_enumerate == NULL) { 280 async_answer_0(c handle, ENOTSUP);280 async_answer_0(call, ENOTSUP); 281 281 return; 282 282 } … … 285 285 usb_speed_t speed = DEV_IPC_GET_ARG2(*call); 286 286 const errno_t ret = usbhc_iface->device_enumerate(fun, port, speed); 287 async_answer_0(c handle, ret);287 async_answer_0(call, ret); 288 288 } 289 289 290 290 static void remote_usbhc_device_remove(ddf_fun_t *fun, void *iface, 291 cap_call_handle_t chandle,ipc_call_t *call)291 ipc_call_t *call) 292 292 { 293 293 const usbhc_iface_t *usbhc_iface = (usbhc_iface_t *) iface; 294 294 295 295 if (usbhc_iface->device_remove == NULL) { 296 async_answer_0(c handle, ENOTSUP);296 async_answer_0(call, ENOTSUP); 297 297 return; 298 298 } … … 300 300 const unsigned port = DEV_IPC_GET_ARG1(*call); 301 301 const errno_t ret = usbhc_iface->device_remove(fun, port); 302 async_answer_0(c handle, ret);302 async_answer_0(call, ret); 303 303 } 304 304 305 305 static void remote_usbhc_register_endpoint(ddf_fun_t *fun, void *iface, 306 cap_call_handle_t chandle,ipc_call_t *call)306 ipc_call_t *call) 307 307 { 308 308 assert(fun); … … 313 313 314 314 if (!usbhc_iface->register_endpoint) { 315 async_answer_0(c handle, ENOTSUP);315 async_answer_0(call, ENOTSUP); 316 316 return; 317 317 } 318 318 319 319 usb_endpoint_descriptors_t ep_desc; 320 cap_call_handle_t data_chandle;320 ipc_call_t data; 321 321 size_t len; 322 322 323 if (!async_data_write_receive(&data _chandle, &len) ||323 if (!async_data_write_receive(&data, &len) || 324 324 len != sizeof(ep_desc)) { 325 async_answer_0(chandle, EINVAL); 326 return; 327 } 328 async_data_write_finalize(data_chandle, &ep_desc, sizeof(ep_desc)); 325 async_answer_0(call, EINVAL); 326 return; 327 } 328 329 async_data_write_finalize(&data, &ep_desc, sizeof(ep_desc)); 329 330 330 331 usb_pipe_desc_t pipe_desc; 331 332 332 333 const errno_t rc = usbhc_iface->register_endpoint(fun, &pipe_desc, &ep_desc); 333 async_answer_0(c handle, rc);334 335 if (!async_data_read_receive(&data _chandle, &len) ||334 async_answer_0(call, rc); 335 336 if (!async_data_read_receive(&data, &len) || 336 337 len != sizeof(pipe_desc)) { 337 338 return; 338 339 } 339 async_data_read_finalize( data_chandle, &pipe_desc, sizeof(pipe_desc));340 async_data_read_finalize(&data, &pipe_desc, sizeof(pipe_desc)); 340 341 } 341 342 342 343 static void remote_usbhc_unregister_endpoint(ddf_fun_t *fun, void *iface, 343 cap_call_handle_t chandle,ipc_call_t *call)344 ipc_call_t *call) 344 345 { 345 346 assert(fun); … … 350 351 351 352 if (!usbhc_iface->unregister_endpoint) { 352 async_answer_0(c handle, ENOTSUP);353 async_answer_0(call, ENOTSUP); 353 354 return; 354 355 } 355 356 356 357 usb_pipe_desc_t pipe_desc; 357 cap_call_handle_t data_chandle;358 ipc_call_t data; 358 359 size_t len; 359 360 360 if (!async_data_write_receive(&data _chandle, &len) ||361 if (!async_data_write_receive(&data, &len) || 361 362 len != sizeof(pipe_desc)) { 362 async_answer_0(c handle, EINVAL);363 return; 364 } 365 async_data_write_finalize( data_chandle, &pipe_desc, sizeof(pipe_desc));363 async_answer_0(call, EINVAL); 364 return; 365 } 366 async_data_write_finalize(&data, &pipe_desc, sizeof(pipe_desc)); 366 367 367 368 const errno_t rc = usbhc_iface->unregister_endpoint(fun, &pipe_desc); 368 async_answer_0(c handle, rc);369 async_answer_0(call, rc); 369 370 } 370 371 … … 381 382 } 382 383 383 static async_transaction_t *async_transaction_create( cap_call_handle_t caller)384 static async_transaction_t *async_transaction_create(ipc_call_t *call) 384 385 { 385 386 async_transaction_t *trans = calloc(1, sizeof(async_transaction_t)); 386 387 387 388 if (trans != NULL) 388 trans->call er = caller;389 trans->call = *call; 389 390 390 391 return trans; … … 394 395 { 395 396 async_transaction_t *trans = arg; 396 const errno_t err = async_answer_1( trans->caller, error, transferred_size);397 const errno_t err = async_answer_1(&trans->call, error, transferred_size); 397 398 async_transaction_destroy(trans); 398 399 return err; … … 410 411 411 412 errno_t err; 412 cap_call_handle_t data_chandle;413 ipc_call_t data; 413 414 size_t size; 414 415 unsigned flags; 415 416 416 if (!async_share_out_receive(&data _chandle, &size, &flags))417 if (!async_share_out_receive(&data, &size, &flags)) 417 418 return EPARTY; 418 419 419 420 if (size < required_size || (flags & required_flags) != required_flags) { 420 async_answer_0( data_chandle, EINVAL);421 async_answer_0(&data, EINVAL); 421 422 return EINVAL; 422 423 } 423 424 424 if ((err = async_share_out_finalize( data_chandle, &trans->request.buffer.virt)))425 if ((err = async_share_out_finalize(&data, &trans->request.buffer.virt))) 425 426 return err; 426 427 … … 445 446 } 446 447 447 void remote_usbhc_transfer(ddf_fun_t *fun, void *iface, cap_call_handle_t chandle,ipc_call_t *call)448 void remote_usbhc_transfer(ddf_fun_t *fun, void *iface, ipc_call_t *call) 448 449 { 449 450 assert(fun); … … 454 455 455 456 if (!usbhc_iface->transfer) { 456 async_answer_0(chandle, ENOTSUP); 457 return; 458 } 459 460 async_transaction_t *trans = async_transaction_create(chandle); 457 async_answer_0(call, ENOTSUP); 458 return; 459 } 460 461 async_transaction_t *trans = 462 async_transaction_create(call); 461 463 if (trans == NULL) { 462 async_answer_0(c handle, ENOMEM);464 async_answer_0(call, ENOMEM); 463 465 return; 464 466 } … … 466 468 errno_t err = EPARTY; 467 469 468 cap_call_handle_t data_chandle;470 ipc_call_t data; 469 471 size_t len; 470 if (!async_data_write_receive(&data _chandle, &len) ||472 if (!async_data_write_receive(&data, &len) || 471 473 len != sizeof(trans->request)) { 472 async_answer_0( data_chandle, EINVAL);474 async_answer_0(&data, EINVAL); 473 475 goto err; 474 476 } 475 477 476 if ((err = async_data_write_finalize( data_chandle,478 if ((err = async_data_write_finalize(&data, 477 479 &trans->request, sizeof(trans->request)))) 478 480 goto err; … … 494 496 495 497 err: 496 async_answer_0(c handle, err);498 async_answer_0(call, err); 497 499 async_transaction_destroy(trans); 498 500 } -
uspace/lib/drv/generic/remote_usbhid.c
r76f566d r984a9ba 283 283 } 284 284 285 static void remote_usbhid_get_event_length(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);286 static void remote_usbhid_get_event(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);287 static void remote_usbhid_get_report_descriptor_length(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);288 static void remote_usbhid_get_report_descriptor(ddf_fun_t *, void *, cap_call_handle_t,ipc_call_t *);285 static void remote_usbhid_get_event_length(ddf_fun_t *, void *, ipc_call_t *); 286 static void remote_usbhid_get_event(ddf_fun_t *, void *, ipc_call_t *); 287 static void remote_usbhid_get_report_descriptor_length(ddf_fun_t *, void *, ipc_call_t *); 288 static void remote_usbhid_get_report_descriptor(ddf_fun_t *, void *, ipc_call_t *); 289 289 290 290 /** Remote USB HID interface operations. */ … … 306 306 307 307 void remote_usbhid_get_event_length(ddf_fun_t *fun, void *iface, 308 cap_call_handle_t chandle,ipc_call_t *call)308 ipc_call_t *call) 309 309 { 310 310 printf("remote_usbhid_get_event_length()\n"); … … 314 314 if (!hid_iface->get_event_length) { 315 315 printf("Get event length not set!\n"); 316 async_answer_0(c handle, ENOTSUP);316 async_answer_0(call, ENOTSUP); 317 317 return; 318 318 } 319 319 320 320 size_t len = hid_iface->get_event_length(fun); 321 async_answer_1(c handle, EOK, len);321 async_answer_1(call, EOK, len); 322 322 } 323 323 324 324 void remote_usbhid_get_event(ddf_fun_t *fun, void *iface, 325 cap_call_handle_t chandle,ipc_call_t *call)325 ipc_call_t *call) 326 326 { 327 327 usbhid_iface_t *hid_iface = (usbhid_iface_t *) iface; 328 328 329 329 if (!hid_iface->get_event) { 330 async_answer_0(c handle, ENOTSUP);330 async_answer_0(call, ENOTSUP); 331 331 return; 332 332 } … … 334 334 unsigned int flags = DEV_IPC_GET_ARG1(*call); 335 335 336 ipc_call_t data; 336 337 size_t len; 337 cap_call_handle_t data_chandle; 338 if (!async_data_read_receive(&data_chandle, &len)) { 339 async_answer_0(chandle, EPARTY); 338 if (!async_data_read_receive(&data, &len)) { 339 async_answer_0(call, EPARTY); 340 340 return; 341 341 } 342 342 343 343 if (len == 0) { 344 async_answer_0( data_chandle, EINVAL);345 async_answer_0(c handle, EINVAL);344 async_answer_0(&data, EINVAL); 345 async_answer_0(call, EINVAL); 346 346 return; 347 347 } … … 349 349 errno_t rc; 350 350 351 uint8_t * data= malloc(len);352 if ( data== NULL) {353 async_answer_0( data_chandle, ENOMEM);354 async_answer_0(c handle, ENOMEM);351 uint8_t *event = malloc(len); 352 if (event == NULL) { 353 async_answer_0(&data, ENOMEM); 354 async_answer_0(call, ENOMEM); 355 355 return; 356 356 } … … 358 358 size_t act_length; 359 359 int event_nr; 360 rc = hid_iface->get_event(fun, data, len, &act_length, &event_nr, flags);360 rc = hid_iface->get_event(fun, event, len, &act_length, &event_nr, flags); 361 361 if (rc != EOK) { 362 free( data);363 async_answer_0( data_chandle, rc);364 async_answer_0(c handle, rc);362 free(event); 363 async_answer_0(&data, rc); 364 async_answer_0(call, rc); 365 365 return; 366 366 } … … 371 371 } 372 372 373 async_data_read_finalize( data_chandle, data, act_length);374 375 free( data);376 377 async_answer_1(c handle, EOK, event_nr);373 async_data_read_finalize(&data, event, act_length); 374 375 free(event); 376 377 async_answer_1(call, EOK, event_nr); 378 378 } 379 379 380 380 void remote_usbhid_get_report_descriptor_length(ddf_fun_t *fun, void *iface, 381 cap_call_handle_t chandle,ipc_call_t *call)381 ipc_call_t *call) 382 382 { 383 383 usbhid_iface_t *hid_iface = (usbhid_iface_t *) iface; 384 384 385 385 if (!hid_iface->get_report_descriptor_length) { 386 async_answer_0(c handle, ENOTSUP);386 async_answer_0(call, ENOTSUP); 387 387 return; 388 388 } 389 389 390 390 size_t len = hid_iface->get_report_descriptor_length(fun); 391 async_answer_1(c handle, EOK, (sysarg_t) len);391 async_answer_1(call, EOK, (sysarg_t) len); 392 392 } 393 393 394 394 void remote_usbhid_get_report_descriptor(ddf_fun_t *fun, void *iface, 395 cap_call_handle_t chandle,ipc_call_t *call)395 ipc_call_t *call) 396 396 { 397 397 usbhid_iface_t *hid_iface = (usbhid_iface_t *) iface; 398 398 399 399 if (!hid_iface->get_report_descriptor) { 400 async_answer_0(chandle, ENOTSUP); 401 return; 402 } 403 400 async_answer_0(call, ENOTSUP); 401 return; 402 } 403 404 ipc_call_t data; 404 405 size_t len; 405 cap_call_handle_t data_chandle; 406 if (!async_data_read_receive(&data_chandle, &len)) { 407 async_answer_0(chandle, EINVAL); 406 if (!async_data_read_receive(&data, &len)) { 407 async_answer_0(call, EINVAL); 408 408 return; 409 409 } 410 410 411 411 if (len == 0) { 412 async_answer_0( data_chandle, EINVAL);413 async_answer_0(c handle, EINVAL);412 async_answer_0(&data, EINVAL); 413 async_answer_0(call, EINVAL); 414 414 return; 415 415 } … … 417 417 uint8_t *descriptor = malloc(len); 418 418 if (descriptor == NULL) { 419 async_answer_0( data_chandle, ENOMEM);420 async_answer_0(c handle, ENOMEM);419 async_answer_0(&data, ENOMEM); 420 async_answer_0(call, ENOMEM); 421 421 return; 422 422 } … … 430 430 if (rc != EOK) { 431 431 free(descriptor); 432 async_answer_0( data_chandle, rc);433 async_answer_0(c handle, rc);434 return; 435 } 436 437 async_data_read_finalize( data_chandle, descriptor, act_len);438 async_answer_0(c handle, EOK);432 async_answer_0(&data, rc); 433 async_answer_0(call, rc); 434 return; 435 } 436 437 async_data_read_finalize(&data, descriptor, act_len); 438 async_answer_0(call, EOK); 439 439 440 440 free(descriptor); 441 441 } 442 443 444 442 445 443 /**
Note:
See TracChangeset
for help on using the changeset viewer.