api - 内核 API 中的 __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()”的原型可以在同一个头文件中找到。
推荐阅读
- react-native - undefined 不是对象(评估 '_reactNative.NavigationActions.reset')
- ios - 在全新应用安装的 iPhone 主屏幕上添加小部件后,无法从钥匙串和 UserDefaults 中获取保存的值
- footer - 仅在商店页面上禁用页脚(插入页眉和页脚插件)
- java - 如何在更改用户密码时重新配置 SpringBoot 的内存认证?
- python - Raspberry pi 上的 Python sounddevice 输入流失败
- python - 类型错误:__call__() 缺少 1 个必需的位置参数:“发送”Django
- r - 是否存在将 heredocs 放置在 r 脚本中的方法?(这大大简化了嵌入 sql 查询)
- python - qmainwindow() 最多接受 2 个参数(给定 3 个) - 尝试使用 QtUiTools.QUiLoader() 从加载 .ui 文件中继承类 QMainWindow
- node.js - 使用 puppeteer 下载文件不会将文件存储在谷歌云功能的 /tmp 文件夹中
- php - LARAVEL 7 中的多文件输入