答案1
“用户空间内核模块”的描述在术语上是矛盾的:要么在用户空间中运行,要么在内核中运行,但它不能在任何一个中运行,并且不能在用户空间中运行内核模块。
也就是说,可以写设备驱动程序在用户空间中,通过使用相当通用的内核 API(它们在内核空间中运行,无论它们是否是模块),并在用户空间中实现实际的设备驱动程序功能。使用libusb
、spidev
或 的设备驱动程序i2cdev
就是这样的例子:它们使用库来访问众所周知的内核 API,或者直接访问 API,但设备驱动程序逻辑运行在用户空间中。
另一个类似的例子是保险丝:使用固定的内核 API,您可以在用户空间中实现您自己的文件系统。
因此,如果您需要示例,请通过 google 搜索使用这些 API 的设备驱动程序。但它们仍然是“用户空间设备驱动程序”的示例,而不是“用户空间内核设备驱动程序”的示例,所以我不确定这是否是您想要的。
如果你想编写在内核空间中运行的东西,你需要学习如何编写内核模块。
答案2
有一个关于创建文件的sysfs
答案堆栈溢出。它们易于处理,默认情况下无需 root 权限即可访问。