【发布时间】:2021-12-04 04:36:34
【问题描述】:
参考1 和2 等,似乎内核API 带有一个带有两个参数的函数“class_create()”。
但是,在那个 API 3 中,我只能找到一个名为“__class_create()”的函数,它需要三个参数。
“class_create()”和“__class_create()”有什么区别? 前者过时了吗? “class_create()”的文档在哪里?
【问题讨论】:
参考1 和2 等,似乎内核API 带有一个带有两个参数的函数“class_create()”。
但是,在那个 API 3 中,我只能找到一个名为“__class_create()”的函数,它需要三个参数。
“class_create()”和“__class_create()”有什么区别? 前者过时了吗? “class_create()”的文档在哪里?
【问题讨论】:
“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()”的原型可以在同一个头文件中找到。
【讨论】: