Файловая система sysfs
Обзор
sysfs это виртуальная файловая система, создаваемая ядром Linux, которая предоставляет представление в виде иерархии каталогов, отражающей внутреннюю структуру устройств, драйверов и шин.
Путь монтирования: /sys
Назначение sysfs:
Позволяет пользователям и разработчикам взаимодействовать с ядром через файловую систему
Используется для отладки, управления параметрами устройств и мониторинга
Предоставляет доступ к объектам: устройства, драйверы, шины, классы и атрибуты
Связь с model device-driver
Каждое устройство (struct device) и драйвер (struct device_driver) автоматически создают записи в sysfs при регистрации.
Примеры расположения:
/sys/bus/platform/devices/
/sys/bus/i2c/drivers/
/sys/class/gpio/
/sys/devices/platform/
Атрибуты sysfs
Создаются с помощью макросов ядра:
DEVICE_ATTR(name, mode, show, store);
Пример:
static ssize_t foo_show(struct device *dev, struct device_attribute *attr, char *buf) {
return sprintf(buf, "%d\n", foo_value);
}
static ssize_t foo_store(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) {
sscanf(buf, "%d", &foo_value);
return count;
}
static DEVICE_ATTR(foo, 0660, foo_show, foo_store);
static int my_driver_probe(struct platform_device *pdev) {
device_create_file(&pdev->dev, &dev_attr_foo);
return 0;
}
Удаление атрибута:
device_remove_file(&pdev->dev, &dev_attr_foo);