Changeset c1a0488 in mainline for uspace/srv/devman/main.c
- Timestamp:
- 2011-09-02T15:58:02Z (13 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- e2b9b341
- Parents:
- aff587f
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/main.c
raff587f rc1a0488 234 234 dev_node_t *dev_node = (dev_node_t *) arg; 235 235 assign_driver(dev_node, &drivers_list, &device_tree); 236 237 /* Delete one reference we got from the caller. */ 238 dev_del_ref(dev_node); 236 239 return EOK; 237 240 } … … 243 246 fibril_rwlock_write_lock(&device_tree.rwlock); 244 247 248 if (fun->state == FUN_ON_LINE) { 249 fibril_rwlock_write_unlock(&device_tree.rwlock); 250 log_msg(LVL_WARN, "Function %s is already on line.", 251 fun->pathname); 252 return EOK; 253 } 254 245 255 if (fun->ftype == fun_inner) { 246 256 dev = create_dev_node(); … … 260 270 assert(dev != NULL); 261 271 272 /* Give one reference over to assign_driver_fibril(). */ 273 dev_add_ref(dev); 262 274 /* 263 275 * Try to find a suitable driver and assign it to the device. We do … … 269 281 fid_t assign_fibril = fibril_create(assign_driver_fibril, dev); 270 282 if (assign_fibril == 0) { 271 /* 272 * Fallback in case we are out of memory. 273 * Probably not needed as we will die soon anyway ;-). 274 */ 275 (void) assign_driver_fibril(fun); 276 } else { 277 fibril_add_ready(assign_fibril); 283 log_msg(LVL_ERROR, "Failed to create fibril for " 284 "assigning driver."); 285 /* XXX Cleanup */ 286 fibril_rwlock_write_unlock(&device_tree.rwlock); 287 return ENOMEM; 278 288 } 289 fibril_add_ready(assign_fibril); 279 290 } else { 280 291 loc_register_tree_function(fun, &device_tree); … … 291 302 292 303 fibril_rwlock_write_lock(&device_tree.rwlock); 304 305 if (fun->state == FUN_OFF_LINE) { 306 fibril_rwlock_write_unlock(&device_tree.rwlock); 307 log_msg(LVL_WARN, "Function %s is already off line.", 308 fun->pathname); 309 return EOK; 310 } 293 311 294 312 if (fun->ftype == fun_inner) { … … 329 347 } 330 348 349 fun->state = FUN_OFF_LINE; 331 350 fibril_rwlock_write_unlock(&device_tree.rwlock); 332 351
Note:
See TracChangeset
for help on using the changeset viewer.