我正在探索 wifi 管道如何在 Raspberry pi 3 上从驱动程序开始向上工作。
我已经确定了以下负责使用 wifi 芯片的驱动程序:
$ lsmod
...
brcmfmac 186403 0
brcmutil 5661 1 brcmfmac
cfg80211 428871 1 brcmfmac
我的下一步是找到一个与任何驱动程序相关的设备文件,然后我将检查lsof
哪个用户空间应用程序保存该文件。
一旦我发现没有与上述任何驱动程序相关的设备文件,该方法就失败了。使用下面的命令。
/dev $ find . ! -type d -exec sh -c "echo {}; udevadm info -a -n {} | grep DRIVERS" \;
我的问题是,是否还有其他选项可以在 Linux 中连接不通过设备文件的设备驱动程序?
答案1
Linux 中是否有其他不通过设备文件连接设备驱动程序的选项?
是的,网络设备在 /dev 中没有设备文件,或者使用读/写文件操作,因为它们不仅仅响应来自内核空间的调用 - 它们还响应网络流量,因此它们的一组操作不同。这与字符设备和块设备有联系,它们确实具有文件设备节点。
网络设备使用套接字和套接字缓冲区进行通信,主要使用的调用有socket()、bind()、listen()、accept()、read()、write()和close()。网上有大量关于它们的信息,(现在相当旧)Linux Device Drivers 3 (LDD3) 一书是很好的介绍,并且可以在线免费获取。