内核API中__class_create()与class_create()的区别是什么?
关于
class_create()与__class_create()的区别说明 两者的核心差异
__class_create()是内核内部的底层实现函数,设计为接收3个参数:所属模块指针、类名称、sysfs属性关联的所有者key。这个接口面向内核内部的高级场景,要求调用者自行处理所有参数的合法性校验与额外资源配置。class_create()是内核为简化普通驱动开发封装的宏接口,仅需要传入2个参数:所属模块指针(常规场景填THIS_MODULE即可)、类名称。它的内部逻辑会自动填充__class_create()需要的第三个参数为默认空值,直接调用底层函数完成类创建,不需要开发者处理额外的复杂配置,是普通驱动开发的常用公共接口。
class_create()是否已废弃
该接口没有被废弃,它是专门面向普通驱动开发者的简化接口,反而__class_create()属于底层内部接口,常规驱动开发场景不推荐直接调用,仅在需要自定义类的高级属性场景下才会使用。
class_create()的官方文档位置
因为class_create()属于宏定义,没有单独的独立函数文档,它的用法说明和__class_create()同属驱动基础设施类创建模块的说明内容,你在查阅__class_create()的官方文档时通常可以看到相关的封装说明;同时在内核源码的<linux/device.h>头文件中,也有针对该宏的详细注释说明。
内容的提问来源于stack exchange,提问作者Sebastien
相关产品推荐
相关产品推荐

