Changeset 1db5669 in mainline for uspace/srv/devman/driver.c


Ignore:
Timestamp:
2013-09-11T12:35:55Z (11 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
48bd6f4, 4c9b28a
Parents:
cd3b380
Message:

devctl show-drv lists attached devices, add device count to list-drv.

File:
1 edited

Legend:

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

    rcd3b380 r1db5669  
    729729}
    730730
     731/** Get list of device functions. */
     732int driver_get_devices(driver_t *driver, devman_handle_t *hdl_buf,
     733    size_t buf_size, size_t *act_size)
     734{
     735        size_t act_cnt;
     736        size_t buf_cnt;
     737
     738        fibril_mutex_lock(&driver->driver_mutex);
     739
     740        buf_cnt = buf_size / sizeof(devman_handle_t);
     741
     742        act_cnt = list_count(&driver->devices);
     743        *act_size = act_cnt * sizeof(devman_handle_t);
     744
     745        if (buf_size % sizeof(devman_handle_t) != 0) {
     746                fibril_mutex_unlock(&driver->driver_mutex);
     747                return EINVAL;
     748        }
     749
     750        size_t pos = 0;
     751        list_foreach(driver->devices, driver_devices, dev_node_t, dev) {
     752                if (pos < buf_cnt) {
     753                        hdl_buf[pos] = dev->handle;
     754                }
     755
     756                pos++;
     757        }
     758
     759        fibril_mutex_unlock(&driver->driver_mutex);
     760        return EOK;
     761}
     762
    731763/** @}
    732764 */
Note: See TracChangeset for help on using the changeset viewer.