课堂和班级设备的目的是什么



我遵循了一些教程,这些教程解释了如何编写Linux内核模块,我有点困惑。即使阅读了官方的"文档",我对概念的理解也很差。

创建角色设备(register_chrdev(后,我认为使用以下功能的组合是常见的:

class_create

class_device_create

device_create

我无法理解,什么是类,设备以及类设备和驱动程序?

实际上哪一个负责在/proc/下创建条目?

,而不是进入什么是class ,或什么是设备(我不是Linux内核的专家(,我将解决以下问题。

创建角色设备后,您希望能够从用户空间访问它。为此,您需要在/dev下添加设备节点。您可以通过两种方式执行此操作。

使用mknod手动添加设备节点(旧(

mknod /dev/<name> c <major> <minor>

使用udev

这是class_create和device_create或class_device_create(old(进来的地方。

要从内核模块通知udev,您首先使用

创建虚拟设备类

struct class * class_create(owner, name)

现在,名称将出现在/sys/class/<name>

然后,创建一个设备并将其注册为SYSFS。

struct device *device_create(struct class *class, struct device *parent, dev_t devt, void *drvdata, const char *fmt, ...)

现在,设备名称将出现在/sys/devices/virtual/<class name>/<device name>/dev/<device name>

尚不清楚您在问/proc条目的内容。

加载模块后,它将出现在/proc/modules中(执行cat /proc/modules以查看它(。并且,分配设备编号后,用

int register_chrdev_region(dev_t first, unsigned int count, char *name)

,该名称将出现在/proc/devices中(执行cat /proc/devices以查看它(。

,请检查这些功能的内核资源,因为它们很好地描述了他们在评论中所做的事情。

好的旧LDD3没有提供这些机制,但它是一个很好的来源。

相关内容

  • 没有找到相关文章

最新更新