device_for_each_child_node(dev, child)当时不明白调用函数为什么是这样调用?
后来,查看了宏定义和宏函数,特别是/的使用。
先看定义实际上,`device_for_each_child_node(dev, child)`是一个宏定义,它在内核中定义如下:
#define device_for_each_child_node(dev, child) \
for (child = first_child(dev); \
child != NULL; \
child = next_child(child))
其实上面是个for循环,注意看for括号,这只是定义了for如循环,但没有定义for里面执行的逻辑,而调用此宏后的大括号就是for循坏执行的逻辑。
其中,`first_child(dev)`和`next_child(child)`是两个函数,用于获取设备`dev`的第一个子设备节点和下一个兄弟子设备节点。
所以,在这段代码中,`device_for_each_child_node(dev, child)`是用来遍历设备`dev`的子设备节点,并将每个子设备节点的指针保存到变量`child`中。具体的处理逻辑会在遍历过程中执行。