Linux中关于dentry的弱智问题,求大侠高手来点拨下

土豆 2003-12-15 10:40:08
dentry中象d_hash,d_lru这样的列表,它的类型为
struct list_head {struct list_head *next, *prev;};
没有一个指向对象本身的指针,那在使用的时候如何根据d_hash找到对象自己?
我的意思是,我觉得lish_head应该有个象owner一样的指针,在初始化的时候将其指向自己
dentry* entry = d_alloc(……..);
entry->d_hash->owner = entry;
这样,在后面的使用中才可以通过ower得到entry本身
小弟没搞懂,哪个懂的来点拨下,为什么没有实现这样的机制?
...全文
67 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
土豆 2003-12-15
  • 打赏
  • 举报
回复
呵呵,谢谢啦
CoolQ 2003-12-15
  • 打赏
  • 举报
回复
如果用你说的owner之类的指针,需要单独的空间。
而用list_entry的话,就不需要,而且因为编译器的优化做的已经足够好,所以效率和用owner指向自己是一样的.
而且在C中,很少有在结构体中用指针指向自己的,C++倒是有个this
土豆 2003-12-15
  • 打赏
  • 举报
回复
高层的东西用惯了,都OO什么的,对这些底层的奇技淫巧很难理解
暗黑帝国 2003-12-15
  • 打赏
  • 举报
回复
学习
土豆 2003-12-15
  • 打赏
  • 举报
回复
唉,还是我自己来回答:
通过 list_entry宏可以实现从d_hash之类的东东得到dentry本身

4,465

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧