Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel Linux设备驱动程序-导出GPIO时如何接收添加设备的通知?_Linux Kernel_Driver - Fatal编程技术网

Linux kernel Linux设备驱动程序-导出GPIO时如何接收添加设备的通知?

Linux kernel Linux设备驱动程序-导出GPIO时如何接收添加设备的通知?,linux-kernel,driver,Linux Kernel,Driver,这是我第一次向stackoverflow发帖,希望这个问题是合适的 我正在为一个虚拟GPIO芯片编写一个Linux设备驱动程序,该芯片配置了一些用于输入和输出的管脚,其中一些是物理管脚的别名,另一些是虚拟管脚。对于虚拟管脚,我有一个用户空间应用程序,打算通过芯片设备和导出管脚的后门提供虚拟化的另一半。例如,芯片将GPIO 224配置为可中断输入,目的是阻止来自用户空间的呼叫,例如cat/sys/class/GPIO/gpiochip224/虚拟输入/值。为此,我的方法是向“Virtual Inp

这是我第一次向stackoverflow发帖,希望这个问题是合适的

我正在为一个虚拟GPIO芯片编写一个Linux设备驱动程序,该芯片配置了一些用于输入和输出的管脚,其中一些是物理管脚的别名,另一些是虚拟管脚。对于虚拟管脚,我有一个用户空间应用程序,打算通过芯片设备和导出管脚的后门提供虚拟化的另一半。例如,芯片将GPIO 224配置为可中断输入,目的是阻止来自用户空间的呼叫,例如
cat/sys/class/GPIO/gpiochip224/虚拟输入/值
。为此,我的方法是向“Virtual Input”添加一个名为“Virtual”的特殊文件属性(例如)。对“cat”的调用将调用“gpio_chip.get”回调并在队列中等待。我的用户空间应用程序稍后将决定值何时更改,并将更新后的值写入“../Virtual Input/Virtual”,这将在内部更新值并取消阻止等待

我遇到的问题是将设备属性添加到导出的pin。使用echo“224”>/sys/class/gpio/export从命令行导出pin,这反过来调用我的“gpio_芯片请求”回调。这是我找到的唯一一个可能以同步方式添加属性的地方。但是,在查看GPIO类驱动程序时,我看到对“request”回调进行了调用,然后调用了“GPIO_export”,然后调用“device_add”,将设备(即pin)添加到系统中。换句话说,该设备在请求处理程序的上下文中还不存在,我无法添加该属性

我注意到似乎没有与导出的pin设备(或芯片)相关联的总线,并试图创建自己的总线,以便通过
gpio\u export
调用
device\u add
接收通知,但没有任何运气

任何能为我指明正确方向的想法都将不胜感激