顿悟:哈希链表

来源:互联网 发布:ubuntu终端输入密码 编辑:程序博客网 时间:2024/04/27 15:37

之前在分析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来获取父设备的信息。