上课和上课的目的是什么?

Art*_*ium 3 device-driver kernel-module linux-device-driver linux-kernel

我遵循了一些教程,这些教程解释了如何编写Linux内核模块,我有些困惑。即使阅读了官方的“文档”,我仍然对这些概念缺乏理解。

创建了字符设备(register_chrdev)之后,我发现通常使用以下功能的组合:

class_create

class_device_create

device_create

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

以下哪个真正负责创建条目/proc/

dha*_*hka 6

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

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

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

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

要么

使用 udev

这是class_createdevice_createclass_device_create(旧)进入的地方。

要从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(执行a cat /proc/modules进行查看)中。并且,在分配了设备编号之后,请说出

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

,该名称将显示在中/proc/devices(执行一次操作cat /proc/devices即可看到它)。

并且,还请检查内核源代码中的这些功能,因为它们在注释中提供了对其功能的良好描述。

好的老式LDD3不提供这些机制,但是它是一个很好的来源。