是否可以使用变量名在/ sys下创建属性文件? 例如:
char *variable_name = foo;
/* Create an attribute file foo */
struct kobj_attribute test = __ATTR(variable_name,0660,_show,_store);
答案 0 :(得分:0)
我不是真的进入内核开发。但是:如果你这样做:
find /sys -type f -name '*1*'
你应该找到一些例子,其他代码正在做你正在寻找的东西。所以,我只是抓住那些作为例子,看看,他们是如何做到的。一个例子可能是机器检查异常代码:
[...]
/sys/devices/system/machinecheck/machinecheck0/bank1
/sys/devices/system/machinecheck/machinecheck1/bank1
/sys/devices/system/machinecheck/machinecheck2/bank1
/sys/devices/system/machinecheck/machinecheck3/bank1
/sys/devices/system/machinecheck/machinecheck4/bank1
/sys/devices/system/machinecheck/machinecheck5/bank1
[...]
$ ls /sys/devices/system/machinecheck/machinecheck0/bank*
/sys/devices/system/machinecheck/machinecheck0/bank0
/sys/devices/system/machinecheck/machinecheck0/bank1
/sys/devices/system/machinecheck/machinecheck0/bank2
/sys/devices/system/machinecheck/machinecheck0/bank3
/sys/devices/system/machinecheck/machinecheck0/bank4
/sys/devices/system/machinecheck/machinecheck0/bank5
/sys/devices/system/machinecheck/machinecheck0/bank6
在任何情况下,似乎你必须为此重新实现__ATTR宏(即自己初始化kobj_attribute结构)。
答案 1 :(得分:0)
宏__ATTR make stringify你的变量。 看sysfs.h
__stringify宏是:
#define __stringify_1(x...) #x
#define __stringify(x...) __stringify_1(x)
答案 2 :(得分:0)
请参阅Linux内核树下的samples / kobject / kobject-example.c,了解如何在/ sys
下创建属性文件的示例