Changeset 692c40cb in mainline for uspace/srv/devman/devman.c
- Timestamp:
- 2010-05-28T09:04:37Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 5159ae9
- Parents:
- c9f3b45c
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/devman.c
rc9f3b45c r692c40cb 807 807 */ 808 808 dev_class_info_t * add_device_to_class(node_t *dev, dev_class_t *cl, const char *base_dev_name) 809 { 809 { 810 810 dev_class_info_t *info = create_dev_class_info(); 811 info->dev_class = cl; 812 info->dev = dev; 813 814 // add the device to the class 815 fibril_mutex_lock(&cl->mutex); 816 list_append(&info->link, &cl->devices); 817 fibril_mutex_unlock(&cl->mutex); 818 819 // add the class to the device 820 list_append(&info->dev_classes, &dev->classes); 821 822 // create unique name for the device within the class 823 info->dev_name = create_dev_name_for_class(cl, base_dev_name); 811 if (NULL != info) { 812 info->dev_class = cl; 813 info->dev = dev; 814 815 // add the device to the class 816 fibril_mutex_lock(&cl->mutex); 817 list_append(&info->link, &cl->devices); 818 fibril_mutex_unlock(&cl->mutex); 819 820 // add the class to the device 821 list_append(&info->dev_classes, &dev->classes); 822 823 // create unique name for the device within the class 824 info->dev_name = create_dev_name_for_class(cl, base_dev_name); 825 } 824 826 825 827 return info; 826 828 } 827 829 830 dev_class_t * get_dev_class(class_list_t *class_list, char *class_name) 831 { 832 dev_class_t *cl; 833 fibril_mutex_lock(&class_list->classes_mutex); 834 cl = find_dev_class_no_lock(class_list, class_name); 835 if (NULL == cl) { 836 cl = create_dev_class(); 837 if (NULL != cl) { 838 cl->name = class_name; 839 cl->base_dev_name = ""; 840 add_dev_class_no_lock(class_list, cl); 841 } 842 } 843 fibril_mutex_unlock(&class_list->classes_mutex); 844 return cl; 845 } 846 847 dev_class_t * find_dev_class_no_lock(class_list_t *class_list, const char *class_name) 848 { 849 dev_class_t *cl; 850 link_t *link = class_list->classes.next; 851 while (link != &class_list->classes) { 852 cl = list_get_instance(link, dev_class_t, link); 853 if (0 == str_cmp(cl->name, class_name)) { 854 return cl; 855 } 856 } 857 858 return NULL; 859 } 860 828 861 /** @} 829 862 */
Note:
See TracChangeset
for help on using the changeset viewer.