class_create & class_device_create

//主要是在/sys/class/ 下创建一个 “name”的文件夹 !

 

从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用class_create为该设备创建一个class,再为每个设备调用 class_device_create创建对应的设备。大致用法如下:
struct class *myclass = class_create(THIS_MODULE, “my_device_driver”);
class_device_create(myclass, NULL, MKDEV(major_num, 0), NULL, “my_device”);
这样的module被加载时,udev daemon就会自动在/dev下创建my_device设备文件


class_create()
-------------------------------------------------
linux-2.6.22/include/linux/device.h
struct class *class_create(struct module *owner, const char *name)
    class_create - create a struct class structure
    @owner: pointer to the module that is to "own" this struct class
    @name: pointer to a string for the name of this class.
在/sys/class/下创建类目录



class_device_create()
-------------------------------------------------
linux-2.6.22/include/linux/device.h
struct class_device *
class_device_create(struct class        *cls,
                                         struct class_device *parent,
                                         dev_t               devt,
                                         struct device       *device,
                                         const char          *fmt, ...)

    class_device_create - creates a class device and registers it with sysfs
    @cls: pointer to the struct class that this device should be registered to.
    @parent: pointer to the parent struct class_device of this new device, if any.
    @devt: the dev_t for the char device to be added.
    @device: a pointer to a struct device that is assiociated with this class device.
    @fmt: string for the class device's name

### 回答1: class_create是一个函数,用于创建一个新的设备类。它接受一个指向struct class结构体的指针作为参数,并返回一个指向新创建的设备类的指针。 device_create是一个函数,用于创建一个新的设备节点。它接受一个指向struct class结构体的指针、一个指向父设备的指针和一个设备号作为参数,并返回一个指向新创建的设备节点的指针。 ### 回答2: 在Linux驱动程序开发中,class_createdevice_create是常用的函数,它们的作用是为Linux设备驱动程序提供一种无需手动注册设备节点的方式,从而简化了驱动程序的编写过程。 class_create函数可用于向系统注册一个新的设备类别(class),同时自动创建一个sysfs设备类目录,该目录下包含了该设备类别的各种属性和状态信息。在该目录下创建的设备文件会自动继承该设备类别,从而归类管理,便于后续的设备管理操作。另外,向系统注册一个设备类别还可以允许用户空间的程序动态地发现和识别与其相关的设备。 device_create函数是在一个已经注册的设备类别下(通过调用class_create函数实现)创建一个设备对象(即设备节点),并自动将其添加到sysfs文件系统中。设备节点包含了与设备相关的信息,如设备号、设备属性等等。通过该函数,用户空间程序只需知道设备类别名称和设备名称,即可实现对设备的自动发现和访问。同时,该函数还允许驱动程序在设备对象被创建之前执行一些相关的初始化配置操作,以确保设备在使用时的正确性和稳定性。 总之,class_createdevice_create是Linux设备驱动程序编写中非常基础和重要的函数,它们可以大大简化设备节点的创建和管理工作,同时也为用户空间程序提供了一种方便的接口,有助于提升Linux设备驱动程序的可用性和易用性。 ### 回答3: class_createdevice_create都是Linux内核中的函数,用于驱动程序中的设备注册和创建。 class_create函数用于创建设备类,它有以下几个参数: 1. owner:表示该类的拥有者,通常为THIS_MODULE。 2. name:表示设备类的名称,该名称在/sys/class目录下创建。 3. parent:表示设备类的父类指针,可以为NULL。 4. class_attr:表示指向设备类的属性结构数组的指针,属性结构数组中存放着设备的各种属性信息,包括设备属性名、访问方式、读写接口等。 5. device_attr:表示指向设备的属性结构数组的指针,属性结构数组中存放着设备的各种属性信息,包括设备属性名、访问方式、读写接口等。 因此,在使用class_create函数时,需要先定义好设备类和设备的属性结构数组,并通过参数传递给该函数。 而device_create函数用于创建一个设备,并将其加入到设备类中。它有以下几个参数: 1. class:表示指向设备类的指针。 2. parent:表示指定设备的父设备,可以为NULL。 3. devt:表示设备的设备号,在内核中唯一识别该设备。 4. name:表示设备的名称,该名称在/dev目录下创建。 5. fmt:表示设备名称的格式,常用的格式有“%s”,表示设备名称为字符串。 本函数的基本操作就是在设备类中创建一个新的设备。因此,在调用该函数之前,需要确定要创建哪个设备类,以及要创建的设备的名称和设备号。 总的来说,class_createdevice_create两个函数都是用于管理设备的函数,前者用于创建设备类,后者用于创建设备。它们是Linux设备驱动程序中非常常用的两个函数,掌握它们对于开发Linux设备驱动程序非常重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值