Может ли атрибут sysfs принимать не числовое значение в драйвере устройства Linux?
Я разрабатываю драйвер устройства Linux, в котором я должен передать ему строку символов, используя интерфейс sysfs. Могут ли атрибуты sysfs принимать данные в виде строки (что-то вроде echo "somedata" > sysfs_interface
)?
Я реализовал это выше, и это, кажется, работает нормально, но я хотел бы убедиться, что это допустимо (приемлемо в сообществе ядра).
1 ответ
Может атрибуты sysfs принимает данные в виде строки...
Да.
На самом деле это то, что sysfs принимает, когда вы используете echo
, Когда вы используете echo 0
выходные данные составляют два байта, 0x30 (код ASCII для цифры ноль) и 0x0A (новая строка).
Например, интерфейс GPIO LED использует ключевые слова для отчета и выбора триггера.
# cat /sys/class/leds/d8/trigger
none nand-disk mmc0 timer [heartbeat] gpio
(Ключевое слово в скобках указывает текущий выбор, таймер сердцебиения.)
# echo none > /sys/class/leds/d8/trigger
# cat /sys/class/leds/d8/trigger
[none] nand-disk mmc0 timer heartbeat gpio
... (что-то вроде
echo "somedata" > sysfs_interface
)
Вам даже не нужно использовать кавычки.
См. Приведенный выше пример установки светодиодного триггера на none
,
ДОПОЛНЕНИЕ
это пользовательские интерфейсы...
Нет, это в основном.
... а как насчет того, что предоставляется подсистемой?
Официальный ответ из документации Linux / filesystems / sysfs.txt:
Attributes should be ASCII text files, preferably with only one value
per file.