首页 > 解决方案 > 内核 API 中的 __class_create() 和 class_create() 有什么区别?

问题描述

参考12,其中似乎内核 API 带有一个函数“class_create()”,它接受两个参数。

但是,在那个 API 3中,我只能找到一个名为“__class_create()”的函数,它需要三个参数。

“class_create()”和“__class_create()”有什么区别?前者过​​时了吗?“class_create()”的文档在哪里?

标签: apimodulekerneldevice

解决方案


“class_create()”是定义在 include/linux/device/class.h 中的类函数宏,这不是函数。它替换了直接传递给“__class_create()”的静态结构的定义,如下所示:

#define class_create(owner, name)       \
({                      \
    static struct lock_class_key __key; \
    __class_create(owner, name, &__key);    \
})

因此,“__class_create()”存在于内核 API 中。

“__class_create()”的原型可以在同一个头文件中找到。


推荐阅读