Определение dev_attrs, используемых в gpiolib-sysfs.c

#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 /…