Changeset ea28272 in mainline for uspace/lib/drv/generic/driver.c
- Timestamp:
- 2010-12-30T13:43:27Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade
- Children:
- d770deb
- Parents:
- d70d80ed (diff), f418e51 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
rd70d80ed rea28272 81 81 static void driver_irq_handler(ipc_callid_t iid, ipc_call_t *icall) 82 82 { 83 int id = (int)IPC_GET_ METHOD(*icall);83 int id = (int)IPC_GET_IMETHOD(*icall); 84 84 interrupt_context_t *ctx; 85 85 … … 165 165 166 166 devman_handle_t dev_handle = IPC_GET_ARG1(*icall); 167 devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall); 168 167 169 device_t *dev = create_device(); 168 170 dev->handle = dev_handle; … … 172 174 173 175 add_to_devices_list(dev); 176 dev->parent = driver_get_device(&devices, parent_dev_handle); 177 174 178 res = driver->driver_ops->add_device(dev); 175 179 if (0 == res) { … … 196 200 ipc_callid_t callid = async_get_call(&call); 197 201 198 switch (IPC_GET_ METHOD(call)) {202 switch (IPC_GET_IMETHOD(call)) { 199 203 case IPC_M_PHONE_HUNGUP: 200 204 cont = false; … … 250 254 ipc_call_t call; 251 255 callid = async_get_call(&call); 252 ipcarg_t method = IPC_GET_METHOD(call);256 sysarg_t method = IPC_GET_IMETHOD(call); 253 257 int iface_idx; 254 258 … … 304 308 305 309 /* get the method of the remote interface */ 306 ipcarg_t iface_method_idx = IPC_GET_ARG1(call);310 sysarg_t iface_method_idx = IPC_GET_ARG1(call); 307 311 remote_iface_func_ptr_t iface_method_ptr = 308 312 get_remote_method(rem_iface, iface_method_idx); … … 342 346 { 343 347 /* Select interface */ 344 switch (( ipcarg_t) (IPC_GET_ARG1(*icall))) {348 switch ((sysarg_t) (IPC_GET_ARG1(*icall))) { 345 349 case DRIVER_DEVMAN: 346 350 /* handle PnP events from device manager */ … … 377 381 } 378 382 383 /** Wrapper for child_device_register for devices with single match id. 384 * 385 * @param parent Parent device. 386 * @param child_name Child device name. 387 * @param child_match_id Child device match id. 388 * @param child_match_score Child device match score. 389 * @return Error code. 390 */ 391 int child_device_register_wrapper(device_t *parent, const char *child_name, 392 const char *child_match_id, int child_match_score) 393 { 394 device_t *child = NULL; 395 match_id_t *match_id = NULL; 396 int rc; 397 398 child = create_device(); 399 if (child == NULL) { 400 rc = ENOMEM; 401 goto failure; 402 } 403 404 child->name = child_name; 405 406 match_id = create_match_id(); 407 if (match_id == NULL) { 408 rc = ENOMEM; 409 goto failure; 410 } 411 412 match_id->id = child_match_id; 413 match_id->score = child_match_score; 414 add_match_id(&child->match_ids, match_id); 415 416 rc = child_device_register(child, parent); 417 if (EOK != rc) 418 goto failure; 419 420 return EOK; 421 422 failure: 423 if (match_id != NULL) { 424 match_id->id = NULL; 425 delete_match_id(match_id); 426 } 427 428 if (child != NULL) { 429 child->name = NULL; 430 delete_device(child); 431 } 432 433 return rc; 434 } 435 379 436 int driver_main(driver_t *drv) 380 437 {
Note:
See TracChangeset
for help on using the changeset viewer.