''

Orien Daily

  1. Linux 内核的 container_of 宏:从指针倒推回结构体读 Linux 内核源码的时候,你会在每一个角落碰到一个宏——container_of

    Linux 内核的 container_of 宏:从指针倒推回结构体

    读 Linux 内核源码的时候,你会在每一个角落碰到一个宏——container_of。它做的事情乍看像黑魔法:给你一个成员变量的指针,你就能拿回整个结构体的指针。听起来像是 C 语言在偷偷搞反射?

    其实原理特别朴素。C 结构体在内存里是连续布局的,每个成员的偏移量在编译期就确定了。所以如果你知道某个成员的地址,再减去它相对于结构体起始位置的偏移,就回到了结构体的头部。container_of 就是把这个减法封装成了一句宏。内核里到处是链表嵌入在各自的结构体中——list_head 自己不承载数据,它被嵌进 task_struct、inode、sk_buff 等各种结构体里。遍历链表时你拿到的全是 list_head *,要从它找回外层的 task_struct,只能靠 container_of。

    这个设计反过来想更有意思:不是"结构体包含链表节点",而是"链表节点嵌入结构体"。链表的实现完全不知道外面挂的是什么,它只管自己那几个 next 和 prev 指针。泛型不是靠模板、不是靠虚函数,而是靠把数据结构的所有权翻转过来实现的。这种内嵌式链表在内核里无处不在,从进程调度到内存管理到文件系统,全靠这一套。

    宏的定义本身也有值得看的细节。第一步算偏移用的是 ((size_t)&((type *)0)->member)——把零地址强转成结构体指针再取成员地址,得到的值恰好就是偏移量,因为这个"结构体"从地址零开始。offsetofoffsetofoffsetof。

    下次读内核代码看到 container_of(ptr, struct task_struct, run_list) 这种写法,就知道那不过是一次指针减法,背后藏着的是内核对数据结构关系的根本态度:谁包含谁,决定了代码怎么组织。

  2. 📸 @AwsomeRyujin ×2260530 WM 뭔가 실제로 학창시절에도 윈드브레이커 걸치고 다녔을 거 같아 찰떡 같이 어울리네260530 王明 看来他学生时代就穿了一件风衣,非常适合他

    📸 @AwsomeRyujin ×2
    260530 WM

    뭔가 실제로 학창시절에도 윈드브레이커 걸치고 다녔을 거 같아 찰떡 같이 어울리네

    260530 王明

    看来他学生时代就穿了一件风衣,非常适合他。 #ITZY #있지 #YEJI #예지
    原文 #黄礼志

  3. 📸 @AwsomeRyujin ×3260530 WM 팬싸템 부자들 정신 없이 바빴다 ㅎㅎㅎ260530 王明 Fansatem rich people were hectic hehehe #ITZY #있지 #YEJI #예지 #RYUJIN #류진 #LIA #리아 #YUNA #유나原文 #黄礼志

    📸 @AwsomeRyujin ×3
    260530 WM

    팬싸템 부자들 정신 없이 바빴다 ㅎㅎㅎ

    260530 王明

    Fansatem rich people were hectic hehehe #ITZY #있지 #YEJI #예지 #RYUJIN #류진 #LIA #리아 #YUNA #유나
    原文 #黄礼志

  4. 🎵 F.I.L.O. — Nujabes专辑:Metaphorical Music · 3:31Lady Brown 开头的吉他拨弦一出来就松下来了,Nujabes 把碎拍铺得很轻,女声采若远若近地飘着,整首像午后阳台上的那口冷萃——lo-fi 原来也可以是暖的

    🎵 F.I.L.O. — Nujabes
    专辑:Metaphorical Music · 3:31

    Lady Brown 开头的吉他拨弦一出来就松下来了,Nujabes 把碎拍铺得很轻,女声采若远若近地飘着,整首像午后阳台上的那口冷萃——lo-fi 原来也可以是暖的。

    🔗 Spotify · #推歌 #Lo-fi

  5. 📸 @yukirir815 ×4夜遅くに全肯定BOT達のためにいろいろと頑張ってくれていて感謝🙏✨トラブルだったのに配信続けてくれて感謝!近況報告や誕生日会のお話聞けて良かった!今日も推しはかわいいね〜アーカイブあまり残らなそうなのでまだの人はお早めに😌 #加藤小夏原文 #加藤小夏

    📸 @yukirir815 ×4
    夜遅くに全肯定BOT達のためにいろいろと頑張ってくれていて感謝🙏✨
    トラブルだったのに配信続けてくれて感謝!
    近況報告や誕生日会のお話聞けて良かった!今日も推しはかわいいね〜
    アーカイブあまり残らなそうなのでまだの人はお早めに😌 #加藤小夏
    原文 #加藤小夏

  6. 🌅 Orien Daily 朝刊【M.D468】1️⃣ 本地跑模型终于好用了 — 840分357评2️⃣ SpaceX600亿收购Cursor — 1156评热议3️⃣ 日银加息至1%为1995年来最高 — 对应伊朗局势加息4️⃣ 世界杯系统漏洞可改电视画面 — 安全研究者发现5️⃣ KDE Plasma 6.7发布 — 桌面环境更新6️⃣ 安卓17今天推送到Pixel — 手机和手表同步7️⃣ Chrome更新将终结广告拦截 — 流行插件将失效8️⃣ LinkedIn求职信暗藏后门 — 钓鱼攻击新手法频道:@OrienDaily

    🌅 Orien Daily 朝刊【M.D468】
    1️⃣ 本地跑模型终于好用了 — 840分357评
    2️⃣ SpaceX600亿收购Cursor — 1156评热议
    3️⃣ 日银加息至1%为1995年来最高 — 对应伊朗局势加息
    4️⃣ 世界杯系统漏洞可改电视画面 — 安全研究者发现
    5️⃣ KDE Plasma 6.7发布 — 桌面环境更新
    6️⃣ 安卓17今天推送到Pixel — 手机和手表同步
    7️⃣ Chrome更新将终结广告拦截 — 流行插件将失效
    8️⃣ LinkedIn求职信暗藏后门 — 钓鱼攻击新手法

    频道:@OrienDaily

  7. 🌃 Orien Daily 晚刊【6.16】1️⃣ LinkedIn招聘offer藏后门 — 安全研究者揭露供应链攻击2️⃣ Iroh 1.0正式发布 — 去中心化数据同步框架3️⃣ ChatGPT市场份额首破50% — Gemini与Claude紧追4️⃣ 关东地震震度5弱 — 埼玉群马无海啸风险5️⃣ 日央行利率升至1% — 1995年以来最高6️⃣ Commodore推翻盖手机 — 屏蔽社媒与浏览器7️⃣ Stack Overflow推Agent版 — AI编程专属知识库8️⃣ 日本书店跌破万家 — 仅为鼎盛期四成频道:@OrienDaily

    🌃 Orien Daily 晚刊【6.16】
    1️⃣ LinkedIn招聘offer藏后门 — 安全研究者揭露供应链攻击
    2️⃣ Iroh 1.0正式发布 — 去中心化数据同步框架
    3️⃣ ChatGPT市场份额首破50% — Gemini与Claude紧追
    4️⃣ 关东地震震度5弱 — 埼玉群马无海啸风险
    5️⃣ 日央行利率升至1% — 1995年以来最高
    6️⃣ Commodore推翻盖手机 — 屏蔽社媒与浏览器
    7️⃣ Stack Overflow推Agent版 — AI编程专属知识库
    8️⃣ 日本书店跌破万家 — 仅为鼎盛期四成

    频道:@OrienDaily

  8. 📸 @Naoto_SANSPO ×2選手がオールスターファン投票の第1次中間発表でメジャー全体トップ(116万5113票)🎉 選手は三塁手部門で2位🥈 選手は一塁手部門で3位🥉 #大谷翔平 #岡本和真 #村上宗隆 #Dodgers #BlueJays50 #WhiteSox原文 #MLB日本選手

    📸 @Naoto_SANSPO ×2
    選手がオールスターファン投票の第1次中間発表でメジャー全体トップ(116万5113票)🎉

    選手は三塁手部門で2位🥈

    選手は一塁手部門で3位🥉 #大谷翔平 #岡本和真 #村上宗隆 #Dodgers #BlueJays50 #WhiteSox
    原文 #MLB日本選手