我的模块位于哪里?
我制作了一个内核模块并使用下面的代码尝试创建 /dev/mytimer 条目。
#define DEVICE_NAME "mytimer"
#define MAJOR_NUM 61
static struct class *fc;
fc = class_create(THIS_MODULE, DEVICE_NAME);
device_create(fc, NULL, MAJOR_NUM, "%s", DEVICE_NAME);
我在 /dev 中没有看到我的模块为 /dev/mytimer... 但是当我 lsmod
时,我在列表中看到它作为条目 mytimer。
在哪里以及如何找到我的模块?有没有办法把它放在/dev 中?
谢谢!
I made a kernel module and used the code below to try to make a /dev/mytimer entry.
#define DEVICE_NAME "mytimer"
#define MAJOR_NUM 61
static struct class *fc;
fc = class_create(THIS_MODULE, DEVICE_NAME);
device_create(fc, NULL, MAJOR_NUM, "%s", DEVICE_NAME);
I don't see my module in /dev as /dev/mytimer...
But when I lsmod
, I see it in the list as entry mytimer.
Where and how do I find my module? Is there anyway to put it in /dev?
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
设备节点的自动创建是 devfs 负责的。然而,由于担心在内核中实现设备命名策略,它最终被删除。创建设备节点的现代方法是使用 udev,它可以响应 sys 设备事件并按需创建设备节点。
否则,您的另一个选择是在静态文件系统上使用 mknod 手动创建设备节点。
Automatic creation of device nodes was something the devfs was responsible for. However it was eventually removed due to concerns about implementing device naming policy in the kernel. The modern way to create device nodes is using udev which can respond to sys device events and create the device nodes on demand.
Otherwise manually creating device nodes with mknod on a static filesystem is your other option.