Changeset d51ee2b in mainline for uspace/srv/devman/devman.c
- Timestamp:
- 2010-05-21T13:59:09Z (15 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 957cfa58
- Parents:
- c47e1a8
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/devman/devman.c
rc47e1a8 rd51ee2b 736 736 } 737 737 738 /** Create unique device name within the class. 739 * 740 * @param cl the class. 741 * @param base_dev_name contains base name for the device 742 * if it was specified by the driver when it registered the device by the class; 743 * NULL if driver specified no base name. 744 * @return the unique name for the device within the class. 745 */ 746 char * create_dev_name_for_class(dev_class_t *cl, const char *base_dev_name) 747 { 748 char *dev_name; 749 const char *base_name; 750 if (NULL != base_dev_name) { 751 base_name = base_dev_name; 752 } else { 753 base_name = cl->base_dev_name; 754 } 755 756 size_t idx = get_new_class_dev_idx(cl); 757 asprintf(&dev_name, "%s%d", base_name, idx); 758 return dev_name; 759 } 760 761 /** Add the device to the class. 762 * 763 * The device may be added to multiple classes and a class may contain multiple devices. 764 * The class and the device are associated with each other by the dev_class_info_t structure. 765 * 766 * @param dev the device. 767 * @param class the class. 768 * @param base_dev_name the base name of the device within the class if specified by the driver, 769 * NULL otherwise. 770 * @return dev_class_info_t structure which associates the device with the class. 771 */ 772 dev_class_info_t * add_device_to_class(node_t *dev, dev_class_t *cl, const char *base_dev_name) 773 { 774 dev_class_info_t *info = create_dev_class_info(); 775 info->dev_class = cl; 776 info->dev = dev; 777 778 // add the device to the class 779 fibril_mutex_lock(&cl->mutex); 780 list_append(&info->link, &cl->devices); 781 fibril_mutex_unlock(&cl->mutex); 782 783 // add the class to the device 784 list_append(&info->dev_classes, &dev->classes); 785 786 // create unique name for the device within the class 787 info->dev_name = create_dev_name_for_class(cl, base_dev_name); 788 789 return info; 790 } 791 738 792 /** @} 739 793 */
Note:
See TracChangeset
for help on using the changeset viewer.