Linux内核源代码情景分析读书笔记(2)-Linux内核中的C语言

  对于Linux中的C,采用gcc编译器进行编译,其内核源代码的编译也依赖相应的gcc版本。

  由于内核中需要大量的使用双链表,因此将双链表数据结构抽象出来,成为list_head结构体。对于这样的问题,内核源代码采用的方法如下:
  利用宏container_of(ptr,type,member) ({
  const typeof( ((type *)0)->member) * __mptr = (ptr);
        (type *)( (char *)__mptr - offsetof(type,member));})

  其中ptr表示list成员指针,type表示宿主结构体类型,member表示宿主中list成员变量名。

原文地址:https://www.cnblogs.com/peteryj/p/1944907.html