今天搞的SYSFS的一个问题。在我把新代码复制到老的内核上面之后,发现少了一部分SYSFS文件,但是其他几个又在的。于是看了半天SYSFS, KOBJECT. 总算搞清楚了一点。
KOBJECTS可以指定一个KTYPES,在KTYPES里面包括有SYSFS_OP 和DEFAULT_ATTRS。如果这些都设置好了,在KOBJECT_ADD的时候,就会自动在 SYSFS下面生成相应的 SYSFS 文件。另外一个方法是调用sysfs_create_file. 这样可以添加新的文件。
在新的内核里面,KTYPES是在 调用KOBJECT_INIT 或者类似函数的时候,就要传过去的。然后在函数内部设置好。老的内核还是要自己设置。
需要注意的是,设置 KTYPES 一定要在调用 KOBJECT_ADD(或者类似函数)之前。否则设了也没用。我今天就是调试了半天才发现这点。
另外比较奇怪的是,开始我把ktypes设置放到了后面,然后跑了下,发现多了几个sysfs文件。于是让我误以为ktypes已经设置好了。后来才发现根本没放对地方。不过为啥放在后面也会多出几个sysfs文件呢?这个就搞不清楚了。先回家去再说。
No comments:
Post a Comment