博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linux 内核中container_of的理解
阅读量:6680 次
发布时间:2019-06-25

本文共 371 字,大约阅读时间需要 1 分钟。

在linux kernel中, container_of的定义如下:

 

其作用是根据结构体类型、它的一个成员地址及该成员名称来获取该结构体的起始地址。 其中, typeof 是GNU C对标准C的一个扩展,用于获取指定变量的数据类型。 此外用到了另外一个宏定义:

offsetof 获取结构体成员在结构体内部的偏移。它的实现很巧妙,即将0x0位置当做一个TYPE类型的结构体,此时结构体的成员地址也就是其结构体内部地址了。

 

理解了typeof 和 offsetof, container_of的实现也就很容易理解了。 精巧高效的实现,不得不佩服!

 

图片来源于:http://www.embedu.org/Column/Column433.htm

转载于:https://www.cnblogs.com/mush0m/p/3560555.html

你可能感兴趣的文章
《JavaScript面向对象编程指南(第2版)》读书笔记(一)
查看>>
使用Html5+C#+微信 开发移动端游戏详细教程 :(五)游戏图像的加载与操作
查看>>
JAVA入门到精通-第24讲-容器、集合类
查看>>
Silverlight 如何手动打包xap
查看>>
VMware-workstation安装
查看>>
vue 开发2017年变化回顾及2018年展望
查看>>
利用FluorineFX录制音频与视频
查看>>
web api 文档声明
查看>>
Ubuntu下配置 keepalived+nginx+tomcat 负载均衡
查看>>
ffmpeg对rtmp的基本操作[转]
查看>>
iframe嵌入页面不能全部展示
查看>>
PHP 流程
查看>>
angular 自定义指令详解
查看>>
自写 zTree搜索功能 -- 关键字查询 -- 递归无限层
查看>>
软件工程——四则运算3(C#)
查看>>
我的软考之路(八)——三大原则学会数据流图
查看>>
Grails开发环境的高速搭建
查看>>
jQuery Ajax遍历表格,填充数据,将表格中的数据一条一条拼成Jason数组
查看>>
Redis为什么这么快
查看>>
js获取宽度设置thickbox百分比
查看>>