Changes in uspace/lib/drv/generic/driver.c [0ca16307:7e752b2] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
r0ca16307 r7e752b2 48 48 #include <ctype.h> 49 49 #include <errno.h> 50 #include <inttypes.h> 50 51 51 52 #include <ipc/driver.h> … … 164 165 165 166 devman_handle_t dev_handle = IPC_GET_ARG1(*icall); 166 devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall);167 168 167 device_t *dev = create_device(); 169 168 dev->handle = dev_handle; … … 173 172 174 173 add_to_devices_list(dev); 175 dev->parent = driver_get_device(&devices, parent_dev_handle);176 177 174 res = driver->driver_ops->add_device(dev); 178 175 if (0 == res) { 179 printf("%s: new device with handle = %xwas added.\n",176 printf("%s: new device with handle=%" PRIun " was added.\n", 180 177 driver->name, dev_handle); 181 178 } else { 182 printf("%s: failed to add a new device with handle = % d.\n",179 printf("%s: failed to add a new device with handle = %" PRIun ".\n", 183 180 driver->name, dev_handle); 184 181 remove_from_devices_list(dev); … … 207 204 break; 208 205 default: 209 if (!(callid & IPC_CALLID_NOTIFICATION)) 210 ipc_answer_0(callid, ENOENT); 206 ipc_answer_0(callid, ENOENT); 211 207 } 212 208 } … … 230 226 if (dev == NULL) { 231 227 printf("%s: driver_connection_gen error - no device with handle" 232 " % xwas found.\n", driver->name, handle);228 " %" PRIun " was found.\n", driver->name, handle); 233 229 ipc_answer_0(iid, ENOENT); 234 230 return; … … 294 290 printf("%s: driver_connection_gen error - ", 295 291 driver->name); 296 printf("device with handle % dhas no interface "292 printf("device with handle %" PRIun " has no interface " 297 293 "with id %d.\n", handle, iface_idx); 298 294 ipc_answer_0(callid, ENOTSUP); … … 381 377 } 382 378 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 goto leave;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 leave:434 return rc;435 }436 437 379 int driver_main(driver_t *drv) 438 380 {
Note:
See TracChangeset
for help on using the changeset viewer.