我有两个问题:
(A) 我试图确定 Linux 设备驱动程序与用户空间交换数据时可用的各种选项。
我知道的一种常见方法是copy_from_user()
和copy_to_user()
。来自问题在 SO 上,其他一些选项包括netlink
, ioctl
, sysfs
, procfs
, configfs
。我想问是否有人知道有任何资源描述了完整的选项列表以及何时适合使用这些选项。
(B) 我还有一个问题,Linux 中的驱动程序类型是否与允许与用户空间交换数据的选项有关。
根据在线搜索,我可以识别驱动程序类型为字符、块、PCI、USB、网络、TTY(不确定此列表是否完整)。我想问驱动程序的类型和与用户空间交换数据的方式之间是否有任何关系,或者它们是独立的?
答案1
实际上copy_from_user()
,copy_to_user()
我们可以在字符驱动程序中找到这些 API。我们可以使用sysfs属性将数据内核共享到用户空间。