Я работаю с драйвером ядра для устройства I2C, и до сих пор я делал простые атрибуты доступными с помощью помощника sysfs DEVICE_ATTR. Теперь мне нужно сделать длинный список доступных атрибутов, например, /sys/bus/i2c/device/.../param0, .../param1 и т. Д., Но кажется неэффективным писать функцию для каждого из них, а может быть, даже неправильное использование системы sysfs. Например:Модуль ядра экспортирует множество атрибутов устройства в пользовательское пространство
static DEVICE_ATTR(param0, S_IRUGO, NULL, foo_set_param0);
static DEVICE_ATTR(param1, S_IRUGO, NULL, foo_set_param1);
...
static DEVICE_ATTR(param50, S_IRUGO, NULL, foo_set_param50);
Значения по изменению устройства часто и чтение их стоит дорого так постоянно читать их или использовать одну функцию, чтобы прочитать все из них на самом деле не любой вариант. Я немного новичок C, так что, возможно, есть что-то совершенно очевидное, что мне не хватает, но можете ли вы использовать обертку в обратном вызове sysfs show, чтобы взять параметр? Или есть лучшая система, которую я должен использовать для этого? Я посмотрел на debugfs, и мне кажется, что мне нужно поддерживать значения в памяти для него.