Changes in uspace/srv/devman/main.c [0b5a4131:228e490] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/main.c
r0b5a4131 r228e490 36 36 */ 37 37 38 #include <inttypes.h> 38 39 #include <assert.h> 39 40 #include <ipc/services.h> … … 73 74 74 75 iid = async_get_call(&icall); 75 if (IPC_GET_ METHOD(icall) != DEVMAN_DRIVER_REGISTER) {76 if (IPC_GET_IMETHOD(icall) != DEVMAN_DRIVER_REGISTER) { 76 77 ipc_answer_0(iid, EREFUSED); 77 78 return NULL; … … 108 109 ipc_call_t call; 109 110 ipc_callid_t callid = async_get_call(&call); 110 if (IPC_GET_ METHOD(call) != IPC_M_CONNECT_TO_ME) {111 if (IPC_GET_IMETHOD(call) != IPC_M_CONNECT_TO_ME) { 111 112 ipc_answer_0(callid, ENOTSUP); 112 113 ipc_answer_0(iid, ENOTSUP); … … 140 141 141 142 callid = async_get_call(&call); 142 if (DEVMAN_ADD_MATCH_ID != IPC_GET_ METHOD(call)) {143 if (DEVMAN_ADD_MATCH_ID != IPC_GET_IMETHOD(call)) { 143 144 printf(NAME ": ERROR: devman_receive_match_id - invalid " 144 145 "protocol.\n"); … … 183 184 * @return Zero on success, negative error code otherwise. 184 185 */ 185 static int devman_receive_match_ids( ipcarg_t match_count,186 static int devman_receive_match_ids(sysarg_t match_count, 186 187 match_id_list_t *match_ids) 187 188 { … … 196 197 } 197 198 199 static int assign_driver_fibril(void *arg) 200 { 201 node_t *node = (node_t *) arg; 202 assign_driver(node, &drivers_list, &device_tree); 203 return EOK; 204 } 205 198 206 /** Handle child device registration. 199 207 * … … 203 211 { 204 212 devman_handle_t parent_handle = IPC_GET_ARG1(*call); 205 ipcarg_t match_count = IPC_GET_ARG2(*call);213 sysarg_t match_count = IPC_GET_ARG2(*call); 206 214 dev_tree_t *tree = &device_tree; 207 215 … … 236 244 237 245 devman_receive_match_ids(match_count, &node->match_ids); 238 246 247 /* 248 * Try to find a suitable driver and assign it to the device. We do 249 * not want to block the current fibril that is used for processing 250 * incoming calls: we will launch a separate fibril to handle the 251 * driver assigning. That is because assign_driver can actually include 252 * task spawning which could take some time. 253 */ 254 fid_t assign_fibril = fibril_create(assign_driver_fibril, node); 255 if (assign_fibril == 0) { 256 /* 257 * Fallback in case we are out of memory. 258 * Probably not needed as we will die soon anyway ;-). 259 */ 260 (void) assign_driver_fibril(node); 261 } else { 262 fibril_add_ready(assign_fibril); 263 } 264 239 265 /* Return device handle to parent's driver. */ 240 266 ipc_answer_1(callid, EOK, node->handle); 241 242 /* Try to find suitable driver and assign it to the device. */243 assign_driver(node, &drivers_list, &device_tree);244 267 } 245 268 … … 296 319 printf(NAME ": device '%s' added to class '%s', class name '%s' was " 297 320 "asigned to it\n", dev->pathname, class_name, class_info->dev_name); 298 321 299 322 ipc_answer_0(callid, EOK); 300 323 } … … 344 367 callid = async_get_call(&call); 345 368 346 switch (IPC_GET_ METHOD(call)) {369 switch (IPC_GET_IMETHOD(call)) { 347 370 case IPC_M_PHONE_HUNGUP: 348 371 cont = false; … … 397 420 ipc_callid_t callid = async_get_call(&call); 398 421 399 switch (IPC_GET_ METHOD(call)) {422 switch (IPC_GET_IMETHOD(call)) { 400 423 case IPC_M_PHONE_HUNGUP: 401 424 cont = false; … … 405 428 break; 406 429 default: 407 if (!(callid & IPC_CALLID_NOTIFICATION)) 408 ipc_answer_0(callid, ENOENT); 430 ipc_answer_0(callid, ENOENT); 409 431 } 410 432 } … … 418 440 node_t *dev = find_dev_node(&device_tree, handle); 419 441 if (dev == NULL) { 420 printf(NAME ": devman_forward error - no device with handle % x "421 " was found.\n", handle);442 printf(NAME ": devman_forward error - no device with handle %" PRIun 443 " was found.\n", handle); 422 444 ipc_answer_0(iid, ENOENT); 423 445 return; … … 435 457 436 458 if (driver == NULL) { 437 printf(NAME ": devman_forward error - the device is not in "438 " usable state.\n", handle);459 printf(NAME ": devman_forward error - the device is not in %" PRIun 460 " usable state.\n", handle); 439 461 ipc_answer_0(iid, ENOENT); 440 462 return; … … 450 472 printf(NAME ": devman_forward: cound not forward to driver %s ", 451 473 driver->name); 452 printf("the driver's phone is % x).\n", driver->phone);474 printf("the driver's phone is %" PRIun ").\n", driver->phone); 453 475 ipc_answer_0(iid, EINVAL); 454 476 return; … … 464 486 static void devman_connection_devmapper(ipc_callid_t iid, ipc_call_t *icall) 465 487 { 466 devmap_handle_t devmap_handle = IPC_GET_ METHOD(*icall);488 devmap_handle_t devmap_handle = IPC_GET_IMETHOD(*icall); 467 489 node_t *dev; 468 490 … … 499 521 * passes device handle to the driver as an ipc method.) 500 522 */ 501 if (IPC_GET_ METHOD(*icall) != IPC_M_CONNECT_ME_TO)523 if (IPC_GET_IMETHOD(*icall) != IPC_M_CONNECT_ME_TO) 502 524 devman_connection_devmapper(iid, icall); 503 525 … … 509 531 510 532 /* Select interface. */ 511 switch (( ipcarg_t) (IPC_GET_ARG1(*icall))) {533 switch ((sysarg_t) (IPC_GET_ARG1(*icall))) { 512 534 case DEVMAN_DRIVER: 513 535 devman_connection_driver(iid, icall); … … 577 599 578 600 /* Register device manager at naming service. */ 579 ipcarg_t phonead;601 sysarg_t phonead; 580 602 if (ipc_connect_to_me(PHONE_NS, SERVICE_DEVMAN, 0, 0, &phonead) != 0) 581 603 return -1;
Note:
See TracChangeset
for help on using the changeset viewer.