我正在尝试了解当您写入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个小时的代码,但仍然无法解决发生的事情