2016-10-08 28 views
0

是否可以使用变量名在/ sys下创建属性文件? 例如:如何使用变量名创建/ 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结构自己)。

0

宏__ATTR使得stringify变量。 看sysfs.h

的__stringify宏是:

#define __stringify_1(x...)  #x 
#define __stringify(x...)  __stringify_1(x) 
0

看到Linux内核树下样品/ kobject的/ kobject的-example.c对于如何创建在/ sys

的属性文件的例子