我将如何着手实现我自己的文件描述符? 假设我有一个控制某些硬件的内核模块,我想通过 read() 和 write() 向用户空间公开与该硬件通信的能力。不想使用 IOCTL 或 netlink 或其他用户空间内核空间方法。我需要重新编译内核还是可以通过编写内核模块来完成。
我知道创建文件描述符需要一种机制让用户空间告诉内核空间在任务的文件结构中创建一个条目(即相当于 open()、eventfd() timerfd()、socket() 的函数) .我可以通过 IOCTL 实现(这样我就不必重新编译内核),但是我如何破解 read() 和 write() - 我之前已经使用 LD_PRELOAD 修补了它们,这是唯一的方法吗?不想重新编译内核!
最佳答案
我不确定我是否理解您的所有问题。尽管如此:
- 您绝对可以将其作为内核模块;
- 您可能想要创建一个字符设备(问题的第二部分);
- 对于字符设备,你可以实现你需要的系统调用;如果您只想让
read
和write
- 没问题;
查看此 book 的第三章(及其他) .
关于c - 实现文件描述符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15632758/