标签: 链表

  • Linux Kernel 的双向链表实现

    在一个太阳毒辣的周五,刚到公司的我还没吃完手里的面包,肯尼斯把我抓到他的屏幕前:“你来说说这段代码什么意思。”

    [cc lang=”C”]
    #define container_of(ptr, type, member) ({ \
    const typeof( ((type *)0)->member ) *__mptr = (ptr); \
    (type *)( (char *)__mptr – offsetof(type,member) );})
    [/cc]

    我凝视屏幕一分钟,问道:“这…有注释吗?”
    见状,肯尼斯渐渐露出笑容。我仿佛从肯尼斯的笑脸中,看到了下一分钟认怂的我。

    一分钟后,肯尼斯从 Kernel 的双向链表给我讲起…

    测试环境

    下面的 Kernel 源码以及测试环境均为 RHEL7.3:
    kernel-3.10.0-514.el7.x86_64
    gcc-4.8.5-11.el7.x86_64
    (更多…)