我将如何实现自己的文件描述符?假设我有一个控制某些硬件的内核模块,并且我想通过 read() 和 write() 向用户空间公开与该硬件通信的能力。不想使用 IOCTL 或 netlink 或其他用户空间-内核空间方法。我需要重新编译内核还是可以通过编写内核模块来完成。
我知道创建文件描述符需要用户空间的机制来告诉内核空间在任务的文件结构中创建一个条目(即等效于 open()、eventfd() timerfd()、socket() 的函数)。我可以通过 IOCTL 实现(这样我就不必重新编译内核),但是我如何破解 read() 和 write() - 我之前使用 LD_PRELOAD 修补过它们,这是唯一的方法吗?不想重新编译内核!