Я не слишком много работал с sysfs, но нашел простой пример, который очень похож на то, что вы делаете (естественно, он также работает под управлением ARM). Взгляните на arch/arm/mach-omap1/pm.c
, в частности файл idle_show
/ idle_store
sysfs. Он регистрируется (используя sysfs_create_file()
) как /sys/power/sleep_while_idle
и использует глобальный /sys/power
kobj (определенный в include/linux/kobject.h
). Есть несколько других глобальных kobj, которые вы можете использовать, хотя я не думаю, что они подходят для вашего драйвера.
Это будет драйвер платформы? Для водителя, который не подходит ни под один автобус, это выглядит как хорошая подгонка. Драйверы платформы получают свой собственный каталог в / sys / devices / platform и могут иметь там атрибуты. Взгляните на drivers/hwmon/coretemp.c
, который имеет temp1_crit
, temp1_crit_alarm
, temp1_input
и т. Д. В качестве атрибутов. Это выглядит довольно просто: создайте атрибуты (возможно, с помощью __ATTR()
?), Перечислите их все в массиве, определите attribute_group
, зарегистрируйте его с помощью sysfs_create_group()
в функции probe()
и отмените регистрацию с помощью sysfs_remove_group()
в функции remove()
.
Возможно, есть другие драйверы платформы, которые определяют атрибуты (ищите sysfs_create_group
), если вам нужны другие примеры. Надеюсь, это поможет!