当前位置: 技术问答>linux和unix
請教關於container_of的實現原理
来源: 互联网 发布时间:2016-06-20
本文导语: 最近讀linux內核2.6.10的usb驅動這一部分,看到函數associate_dev(struct us_data *us, struct usb_interface *intf)是有点不明白,us->pusb_dev = interface_to_usbdev(intf);这句是给 us->pusb_dev赋值,但是我翻来覆去看了几次这里,还是不能...
最近讀linux內核2.6.10的usb驅動這一部分,看到函數associate_dev(struct us_data *us, struct usb_interface *intf)是有点不明白,us->pusb_dev = interface_to_usbdev(intf);这句是给 us->pusb_dev赋值,但是我翻来覆去看了几次这里,还是不能发现其中奥妙,这其中是怎样给us->pusb_dev 赋值的?其中在宏interface_to_usbdev裡邊就是container_of(intf->dev.parent, struct usb_device, dev);执行这条语句之后,后面的debug信息中成员pusb_dev中的成员都已经被填入了值?承蒙高手指點,不胜感激~~
|
container_of()宏的简要解析
http://blog.csdn.net/yinkaizhong/archive/2009/04/20/4093795.aspx
http://blog.chinaunix.net/u2/79807/showart_1330336.html
http://blog.csdn.net/yinkaizhong/archive/2009/04/20/4093795.aspx
http://blog.chinaunix.net/u2/79807/showart_1330336.html
|
2句话
1 结构体在内存中是连续的。
2 知道某个结构的变量地址,和它在这个结构体中的offset,简单减法,就可以知道该结构体的地址。
1 结构体在内存中是连续的。
2 知道某个结构的变量地址,和它在这个结构体中的offset,简单减法,就可以知道该结构体的地址。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。