本文共 784 字,大约阅读时间需要 2 分钟。
acpi_get_first_physical_node 这个函数用于获取acpi_device的第一个物理节点。其源码分析如下:struct device *acpi_get_first_physical_node(struct acpi_device *adev){ struct mutex *physical_node_lock = &adev->physical_node_lock; struct device *phys_dev; 锁保护 mutex_lock(physical_node_lock); #acpi_device对应的所有物理节点都链接在physical_node_list 这个list上,如果这个list为null,就说明这个acpi_device 没有物理节点,则直接退出 if (list_empty(&adev->physical_node_list)) { phys_dev = NULL; } else { const struct acpi_device_physical_node *node; #取adev->physical_node_list的第一个节点返回作为第一个物理节点返回给用户 node = list_first_entry(&adev->physical_node_list, struct acpi_device_physical_node, node); phys_dev = node->dev; } mutex_unlock(physical_node_lock); #返回第一个物理节点给用户 return phys_dev;}从这里也可以知道一个acpi_device 可以有多个物理节点,所有的物理节点都按先后顺序保存在physical_node_list 这个list中
转载地址:http://ldnmi.baihongyu.com/