Changeset c3d9aaf5 in mainline for uspace/srv/devman/dev.c


Ignore:
Timestamp:
2025-02-03T15:52:08Z (19 hours ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
b1490d2
Parents:
a796812c
Message:

Determine when device (sub)tree is stable.

Devman will only return value when the entire device tree is stable.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/devman/dev.c

    ra796812c rc3d9aaf5  
    11/*
     2 * Copyright (c) 2025 Jiri Svoboda
    23 * Copyright (c) 2010 Lenka Trochtova
    34 * All rights reserved.
     
    5051        refcount_init(&dev->refcnt);
    5152        list_initialize(&dev->functions);
     53        fibril_mutex_initialize(&dev->state_lock);
     54        fibril_condvar_initialize(&dev->state_cv);
    5255        link_initialize(&dev->driver_devices);
    5356
     
    8790        if (refcount_down(&dev->refcnt))
    8891                delete_dev_node(dev);
     92}
     93
     94/** Wait until the device node enters stable state.
     95 *
     96 * @param dev Device node
     97 */
     98void dev_wait_stable(dev_node_t *dev)
     99{
     100        fibril_mutex_lock(&dev->state_lock);
     101        while (dev->state == DEVICE_ATTACHING)
     102                fibril_condvar_wait(&dev->state_cv, &dev->state_lock);
     103        fibril_mutex_unlock(&dev->state_lock);
    89104}
    90105
Note: See TracChangeset for help on using the changeset viewer.