当前位置: 技术问答>linux和unix
Linux中关于dentry的弱智问题,求大侠高手来点拨下
来源: 互联网 发布时间:2015-05-23
本文导语: dentry中象d_hash,d_lru这样的列表,它的类型为 struct list_head {struct list_head *next, *prev;}; 没有一个指向对象本身的指针,那在使用的时候如何根据d_hash找到对象自己? 我的意思是,我觉得lish_head应该有个...
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本身
小弟没搞懂,哪个懂的来点拨下,为什么没有实现这样的机制?
struct list_head {struct list_head *next, *prev;};
没有一个指向对象本身的指针,那在使用的时候如何根据d_hash找到对象自己?
我的意思是,我觉得lish_head应该有个象owner一样的指针,在初始化的时候将其指向自己
dentry* entry = d_alloc(……..);
entry->d_hash->owner = entry;
这样,在后面的使用中才可以通过ower得到entry本身
小弟没搞懂,哪个懂的来点拨下,为什么没有实现这样的机制?
|
如果用你说的owner之类的指针,需要单独的空间。
而用list_entry的话,就不需要,而且因为编译器的优化做的已经足够好,所以效率和用owner指向自己是一样的.
而且在C中,很少有在结构体中用指针指向自己的,C++倒是有个this
而用list_entry的话,就不需要,而且因为编译器的优化做的已经足够好,所以效率和用owner指向自己是一样的.
而且在C中,很少有在结构体中用指针指向自己的,C++倒是有个this