Linux Kernel 的双向链表实现

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

#define container_of(ptr, type, member) ({                      \
        const typeof( ((type *)0)->member ) *__mptr = (ptr);    \
        (type *)( (char *)__mptr - offsetof(type,member) );})

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

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

测试环境

下面的 Kernel 源码以及测试环境均为 RHEL7.3:
kernel-3.10.0-514.el7.x86_64
gcc-4.8.5-11.el7.x86_64
继续阅读“Linux Kernel 的双向链表实现”

【台湾单车环岛计划】碎碎念

7-11微波炉面包

7-11的微波炉是化腐朽为神奇的利器。便当热饮样样精通。最让我上瘾的,是微波炉加热后的面包。7-11的面包似乎是专为微波炉加热设计的。奶酥面包,巧克力夹心面包,微波10秒,冒着热气的面包格外松软,馅料从固态变成液态流向舌头每个角落,欲罢不能。
7-11面包
继续阅读“【台湾单车环岛计划】碎碎念”

【台湾单车环岛计划】Day 12 & Day 13 - 花莲 → 宜兰 → 台北

Day 12 - 花莲 → 宜兰 → 台北

苏花公路有如“清水断崖”的美景,同时路况也是比较危险的。天气不给力,坐火车是最稳妥的选择。其实在火车上也能看到一路的景色,可惜速度太快了。
rsz_r9
继续阅读“【台湾单车环岛计划】Day 12 & Day 13 - 花莲 → 宜兰 → 台北”

【台湾单车环岛计划】Day 8 - 高雄 → 台东

5点起床,迷迷糊糊地出门了。住得离车站近,推着车走10分钟就到车站了。在高雄车站,按照“自行车牵引道”的标识,坐电梯就能到达站台。没有胃口吃早餐,到了太麻里再说吧。

莒光号有专门的两铁车厢,车厢里有脚架可以停放自行车,后面有座位可以坐着睡觉吃东西。
莒光号
继续阅读“【台湾单车环岛计划】Day 8 - 高雄 → 台东”