#c #linux-kernel #driver #gpio
#c #linux-ядро #драйвер #gpio
Вопрос:
Я пытаюсь понять, что происходит в коде драйвера ядра Linux, особенно то, как создаются виртуальные файлы в /sys/class/gpio/ … . При проверке drivers/ gpio/gpiolib-sysfs.c я наткнулся на эти определения внизу файла:
static struct attribute *gpio_attrs[] = {
amp;dev_attr_direction.attr,
amp;dev_attr_edge.attr,
amp;dev_attr_value.attr,
amp;dev_attr_active_low.attr,
NULL,
};
Мой вопрос: где определены эти объекты, на которые ссылаются (dev_attr_direction, dev_attr_edge, dev_attr_value, dev_attr_active_low)? Я просмотрел весь код ядра, но не смог найти никаких определений…
Ответ №1:
Я думаю, что нашел возможное определение, например
static DEVICE_ATTR(edge, 0644, gpio_edge_show, gpio_edge_store);
может быть макросом прекомпилятора, который генерирует одно из сомнительных определений.
Просто идея.
Комментарии:
1. Действительно, вы правы elixir.bootlin.com/linux/latest/source/include/linux /…