深入分析Linux操作系统的内核链表3

高平历史网 2020-06-13 17:37:32

3. 遍历 遍历是链表最经常的操作之一直接跌入成本线以下。,为了方便核心应用遍历链表债券大王格罗斯(BillGross)从太平洋投资管理公司(PIMCO)离职的消息引发债券市场的担忧,Linux 链表将遍历操作抽象成几个宏。在介绍遍历宏之前,我们先看看如何从链表中访问到我们真正需要的数据项。 a) 由链表节点到数据项变量 我们知道,Linux 链表中仅保存了数据项结构中 list_head 成员变量的地址,那么我们如何通过这个 list_head 成员访问到作为它的所有者的节点数据呢?Linux 为此提供了一个 list_entry(ptr,type,member) 宏,其中ptr是指向该数据中 list_head 成员的指针,也就是存储在链表中的地址值,type 是数据项的类型,member 则是数据项类型定义中 list_head 成员的变量名,例如,我们要访问 nf_sockopts 链表中首个 nf_sockopt_ops 变量,则如此调用:  list_entry(nf_sockopts-next, struct nf_sockopt_ops, list);

这里 "list" 正是 nf_sockopt_ops 结构中定义的用于链表操作的节点成员变量名。

如何治疗肝郁型月经不调
巴彦淖尔白癜风好的医院
贵州哪家医院治疗白癜风
友情链接