[toc]
Makefile宏
LINUX_ARM_ARCH
1 | //arch/arm/Makefile |
include/linux/typecheck.h 定义了内核与用户空间共享的基础类型,如 __u8, __s32
typecheck 类型检查
1 | /* |
include/uapi/linux/types.h 定义了内核与用户空间共享的基础类型,如 __u8, __s32
__bitwise 位域标记
- attribute((bitwise)) 是一个编译器特定的扩展属性,通常用于标记某些类型或变量,以指示它们应该被视为位域或位操作相关的类型。这种属性可以帮助编译器进行更严格的类型检查,防止误用位操作符或混淆不同的位域类型。
1 |
include/linux/export.h 提供 EXPORT_SYMBOL() 宏,用于将内核符号导出给可加载模块使用
__EXPORT_SYMBOL_REF 导出符号引用
1 |
___EXPORT_SYMBOL 导出符号底层实现
- ___EXPORT_SYMBOL宏通过将符号、许可证信息和命名空间信息嵌入到特定的汇编段中,确保这些信息在最终生成的二进制文件中可用。这在模块化编程和内核开发中非常有用,允许不同模块之间共享符号和元数据。
1 |
|
__EXPORT_SYMBOL 导出符号具体实现
__DISABLE_EXPORTS
宏用于完全禁用元件导出,以便 C 代码可以在其他执行上下文中重用,例如 UEFI 存根或解压缩器。__GENKSYMS__
宏用于生成符号导出信息,以便在内核模块之间共享符号。在scripts/Makefile.build 进行定义使用__ASSEMBLY__
宏用于在汇编代码中使用导出符号。它通常用于在汇编代码中引用 C 语言中的符号。CONFIG_GENDWARFKSYMS
宏用于确保编译器为所有导出符号生成调试信息,包括在不同的翻译单元中定义的符号。它通过添加一个指向符号的指针来实现,这个指针在最终链接时被丢弃。- 默认情况下,
__EXPORT_SYMBOL
宏用于导出符号。它会生成一个汇编指令,将符号导出到指定的命名空间中。这个宏通常用于内核模块之间共享符号,以便在不同的模块中使用相同的符号。
1 |
|
EXPORT_SYMBOL 导出符号
- 这个宏用于将符号 sym 导出,使其可以被其他内核模块使用。
1 |
include/linux/init.h 提供 __init、__exit、module_init 等宏,用于标记初始化和退出函数
__init __exitdata等 内核可以将此视为该函数仅在初始化阶段使用的提示,并在初始化阶段之后释放已使用的内存资源
1 | * 这些宏用于将某些函数或初始化的数据(不适用于未初始化的数据)标记为 'initialization' 函数。内核可以将此视为该函数仅在初始化阶段使用的提示,并在初始化阶段之后释放已使用的内存资源 |
include/linux/thread_info.h 定义 thread_info 结构体,连接进程描述符和内核栈
current_thread_info 获取当前线程信息
current_thread_info
是一个宏,用于获取当前线程的信息。它通常用于访问与当前线程相关的数据结构,例如线程的状态、优先级等。
1 |
|
tif_need_resched 返回是否需要调度
- 测试
¤t_thread_info()->flags
的TIF_NEED_RESCHED位是否为1
1 | static __always_inline bool tif_test_bit(int bit) |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 wdfk-prog的个人博客!
评论