Changeset fc8c2b6 in mainline for uspace/srv/devman/devman.c


Ignore:
Timestamp:
2011-03-30T14:26:13Z (14 years ago)
Author:
Vojtech Horky <vojtechhorky@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
e72fb34
Parents:
3fddb55
Message:

devman can tell device handle by its class path

File:
1 edited

Legend:

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

    r3fddb55 rfc8c2b6  
    11941194}
    11951195
     1196/** Find function node by its class name and index. */
     1197fun_node_t *find_fun_node_by_class(class_list_t *class_list,
     1198    const char *class_name, const char *dev_name)
     1199{
     1200        assert(class_list != NULL);
     1201        assert(class_name != NULL);
     1202        assert(dev_name != NULL);
     1203
     1204        fibril_rwlock_read_lock(&class_list->rwlock);
     1205
     1206        dev_class_t *cl = find_dev_class_no_lock(class_list, class_name);
     1207        if (cl == NULL) {
     1208                fibril_rwlock_read_unlock(&class_list->rwlock);
     1209                return NULL;
     1210        }
     1211
     1212        dev_class_info_t *dev = find_dev_in_class(cl, dev_name);
     1213        if (dev == NULL) {
     1214                fibril_rwlock_read_unlock(&class_list->rwlock);
     1215                return NULL;
     1216        }
     1217
     1218        fun_node_t *fun = dev->fun;
     1219
     1220        fibril_rwlock_read_unlock(&class_list->rwlock);
     1221
     1222        return fun;
     1223}
     1224
     1225
    11961226/** Find child function node with a specified name.
    11971227 *
     
    13661396}
    13671397
     1398dev_class_info_t *find_dev_in_class(dev_class_t *dev_class, const char *dev_name)
     1399{
     1400        assert(dev_class != NULL);
     1401        assert(dev_name != NULL);
     1402
     1403        link_t *link;
     1404        for (link = dev_class->devices.next;
     1405            link != &dev_class->devices;
     1406            link = link->next) {
     1407                dev_class_info_t *dev = list_get_instance(link,
     1408                    dev_class_info_t, link);
     1409
     1410                if (str_cmp(dev->dev_name, dev_name) == 0) {
     1411                        return dev;
     1412                }
     1413        }
     1414
     1415        return NULL;
     1416}
     1417
    13681418void init_class_list(class_list_t *class_list)
    13691419{
Note: See TracChangeset for help on using the changeset viewer.