我对 Linux 内核和 GPIO 有一些疑问。我知道在 Linux 中一切都是文件,所以当我做类似的事情时
echo 30 > /sys/class/gpio/export
和
echo 1 > /sys/class/gpio/gpio30/value
真的会发生什么?我的意思是 sysfs 是如何处理的?它是否调用 gpiolib 中实现的系统调用?
我对 Linux 内核和 GPIO 有一些疑问。我知道在 Linux 中一切都是文件,所以当我做类似的事情时
echo 30 > /sys/class/gpio/export
和
echo 1 > /sys/class/gpio/gpio30/value
真的会发生什么?我的意思是 sysfs 是如何处理的?它是否调用 gpiolib 中实现的系统调用?
gpiolib以这种方式注册 value 属性:
static const DEVICE_ATTR(value, 0644, gpio_value_show, gpio_value_store);
它创建一个名为 的设备属性value
,具有权限644
;读时调用gpio_value_show
,写时调用gpio_value_store
sysfs 所做的,是重定向read
到write
sysfs 属性的对应函数。