之前在分析lib里面的代码时,有接触过一次哈希链表,只是当时对他的描述有点摸不着头脑。今天在分析driver/base/core.c文件,看到在device_del函数中,dev将自己从父设备链表中删除,突然发现,这不正是一个哈希链表吗。
哈希链表,next指针是一个典型的单向链表,而prev指针却是指向了连表头。
对应着这里的实用:
dev的每一个成员dev->knode_parent都挂在parent的链表parent->klist_children之上,这里是next的单向链表,而dev->parent则指向着parent,也就是链表头。
因为在parent->klist_children链表中,我们只会关心下一个dev是什么,而不会去关心上一个dev是什么。所以这样的应用正好合适。
而每一个dev都继承着父设备的属性,所以正好需要一个dev->parent来获取父设备的信息。