Может ли атрибут 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.
Другие вопросы по тегам