幕后的Linux内核gpio代码?

时间:2017-04-05 11:34:11

标签: c linux kernel gpio

我正在尝试了解当您写入gpio“文件”时幕后发生的事情。

根据我的发现(Linux GPIOs handling),它并不是真正写入文件,而是sysfs将open / read / write映射到其他函数。

但较新版本(http://lxr.free-electrons.com/source/drivers/gpio/gpiolib.c)不包含DEVICE_ATTR。 代替:

2242 int gpiod_direction_input(struct gpio_desc *desc)
2243 {
2244         struct gpio_chip        *chip;
2245         int                     status = -EINVAL;
2246 
2247         VALIDATE_DESC(desc);
2248         chip = desc->gdev->chip;
2249 
2250         if (!chip->get || !chip->direction_input) {
2251                 gpiod_warn(desc,
2252                         "%s: missing get() or direction_input() operations\n",
2253                         __func__);
2254                 return -EIO;
2255         }
2256 
2257         status = chip->direction_input(chip, gpio_chip_hwgpio(desc));
2258         if (status == 0)
2259                 clear_bit(FLAG_IS_OUT, &desc->flags);
2260 
2261         trace_gpio_direction(desc_to_gpio(desc), 1, status);
2262 
2263         return status;
2264 }
2265 EXPORT_SYMBOL_GPL(gpiod_direction_input);

我已经完成了3个小时的代码,但仍然无法解决发生的事情

  • 是否有可能详细了解这种机制?
  • 从写入到导出,从gpio读取/写入一个代码执行的代码?
  • 代码如何从一个值变为“file”到一个带有struct gpio_desc * desc param的函数?
  • 功能映射在哪里发生? (我找不到导出宏)

0 个答案:

没有答案