云南理工大学linux教学-9-10章 内核同步.pptVIP

  • 3
  • 0
  • 约5.87千字
  • 约 23页
  • 2017-07-28 发布于浙江
  • 举报

云南理工大学linux教学-9-10章 内核同步.ppt

第六章 Linux内核中的链表 第六章 Linux内核中的链表 第六章 Linux内核中的链表 Linux内核中的链表 Linux内核中的链表 list_entry(p,t,m)宏 2. 这句话的意思是获取一个结构体中一个成员在这个结构体中的偏移。type *0是为了计算地址方便。意思是在0这个地址看做有一个虚拟的type类型的变量,那么取一个成员再取这个成员的地址,就是这个结构体中这个成员的绝对地址,由于结构体在地址为0的地方,所以这个成员在这个结构体中的相对位置也是这个值了。ptr可能是这个member的指针,而现在想找这个member所在结构体的地址,所以这个member的地址应该减去这个member在这个结构体中的偏移。然后返回这个结构体类型。 这种链表的优点: (1)所有链表基本操作都是基于list_head指针的,因此添加类型时,不需要重复写链表基本操作函数 (2)一个container数据结构可以含有多个list_head成员,这样就可以同时挂到多个不同的链表中 链表操作接口 1. 声明和初始化 实际上Linux只定义了链表节点,并没有专门定义链表头,那么一个链表结构是如何建立起来的呢?让我们来看看LIST_HEAD()这个宏: #define LIST_HEAD_INIT(name) { (name), (name) } #define LIST

文档评论(0)

1亿VIP精品文档

相关文档