发新话题
打印

请教陈老师(关于模块和sysfs )

请教陈老师(关于模块和sysfs )

陈老师,我想把模块在sysfs中隐藏,到底能不能实现呢?
LDD3上说(364页)一个被kobject所保护的结构,不能在驱动程序生命周期的任何可预知的,单独的时间上被释放,也就是说,无法在sysfs下隐藏模块了,是这样么?如果能,思路是?谢谢!!!
sysfs文件系是一个处于内存中的虚拟文件系统,它为我们提供了kobject对象层次结构的视图。帮助用户能以一个简单文件系统的方式来观察系统中各种设备的拓扑结构。借助属性对象,kobject可以用导出文件的方式,将内核变量提供给用户读取或写入(可选)。
  Sysfs的诀窍是把kobject对象与目录项(directory entries)紧密联系起来,这点是通过kobject对象中的dentry字段实现的。
  这部分内容可以参考Linux kernel Devlopment第17章的内容。对象属性为:
/* attribute 结构体- 内核数据映射成sysfs中的文件 */
struct attribute {
        char             *name;    /* 属性名称*/
        struct module    *owner;   /* 所属模块,如果存在*/
        mode_t           mode;     /* 权限*/
};
其中名称字段提供了该属性的名称,最终出现在sysfs中的文件名就是它。owner字段在存在所属模块的情况下指向其所属module结构体。如果一个模块没有该属性,那么该字段为 NULL。mode字段类型为mode_t,它表示了sysfs中该文件的权限。对于只读属性而言,如果是所有人都可读它,那么该字段被设为S_IRUGO;如果只限于所有者可读,则该字段被设置为S_IRUSR。同样对于可写属性,可能会设置该字段为S_IRUGO | S_IWUSR。sysfs中的所有文件和目录的uid与gid标志均为零。
透析真谛,似拨云穿雾;共享智慧,如春风沐浴
http://www.kerneltravel.net
陈老师。那kobject可能在模块不卸载的情况下,从系统中释放吗?
我尝试过kobject_unregister,没有成功。
发新话题