如何通过用户应用程序访问动态模块

如何通过用户应用程序访问动态模块

我创建了一个简单的动态模块(.ko)。用户应用程序如何从内核空间访问驱动程序。如何获取动态加载模块的主要和次要编号。

答案1

您在这个问题中遗漏了很多信息,无法让别人正确回答。我会做一些假设并给出一个简短的答案:

首先,我假设您指的是 Linux,并且您已将模块插入内核并检查它是否已安装并正确运行。我还假设您的驱动程序在 /dev 目录中创建一个设备节点。

要获取主要数字和次要数字,您所需要做的就是运行ls -l /dev/<yourdevnode>.例如,对于 /dev/fuse:

$ ls -l /dev/fuse 
crw-rw-rw- 1 root root 10, 229 Jan  3 09:08 /dev/fuse

这里,10 和 229 分别是主数和次数。

答案2

您是这样的设备驱动程序吗hello world
如果是这样,则不会在 /dev 目录中创建节点。
您还可以使用 mknod 命令创建 /dev/node。
但我不知道你的设备驱动程序是做什么的(根据驱动程序,你可能不需要设备节点)。
我没有你的驱动程序源,所以我猜。
通常,设备驱动程序使用内核函数来创建设备节点。
我想推荐http://derekmolloy.ie/writing-a-linux-kernel-module-part-2-a-character-device/
在上面的链接中,函数通过函数ebbchar_init()创建。 当然,您还可以在源代码中找到主要和次要条目。 查看您的驱动程序是否正在使用上述功能。并检查是否有错误。 /dev/ebbchardevice_create()

相关内容