Linux kernel 用于用户空间中断通知的Sysfs或read()系统调用

Linux kernel 用于用户空间中断通知的Sysfs或read()系统调用,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,我创建了一个驱动程序,它使用sysfs\u notify\u dirent()在PCIe设备中断内核驱动程序时异步唤醒用户空间线程。我发现这是大多数GPIO驱动程序用来将中断传递到用户空间的接口。在做了一些研究之后,我发现UIO使用read()系统调用来做几乎相同的事情。使用read()系统调用而不是sysfs接口来传递中断是否有任何优势(速度或其他方面)。我喜欢sysfs接口,因为它允许我创建多个属性,这样我就可以分别将不同的中断传递给用户空间。我猜在read()上,您可能会返回大量偶数字符串

我创建了一个驱动程序,它使用
sysfs\u notify\u dirent()
在PCIe设备中断内核驱动程序时异步唤醒用户空间线程。我发现这是大多数GPIO驱动程序用来将中断传递到用户空间的接口。在做了一些研究之后,我发现UIO使用
read()
系统调用来做几乎相同的事情。使用
read()
系统调用而不是sysfs接口来传递中断是否有任何优势(速度或其他方面)。我喜欢sysfs接口,因为它允许我创建多个属性,这样我就可以分别将不同的中断传递给用户空间。

我猜在
read()
上,您可能会返回大量偶数字符串的中断。sysfs允许我在不同的文件描述符上阻塞多个线程。Read只允许一个线程在文件描述符上阻塞,然后我必须解析返回代码。我对速度更感兴趣。在
read()
的情况下,只有一个线程处理中断,否则必须在每个要等待事件的线程中实现相同的代码。这两种方法各有利弊。