定义在kernel的Makefile文件中
这个宏是在build c预处理源文件时就会有的一个宏定义;
KBUILD_CPPFLAGS := -D__KERNEL__
这个KBUILD_CPPFLAGS,借鉴于make的机制:
CPPFLAGS Extra flags to give to the C preprocessor and programs that use it (the C and Fortran compilers).
这个定义的用途是什么?
就是为非kernel编译提供一个可选方案,对于非kernel编译,需要不同的引用,设计。
要看对这个宏定义的非存在使用。举个例子:
kernel/bpf/disasm.h
看这个的含义就是在非kernel编译时,使用标准glibc库函数。
#ifndef __KERNEL__
#include
#include
#endif
另一个用途:/Documentation/kbuild/makefiles.txt
对于导出的头文件。kernel会对用户开放一组头文件,很多头文件不需要做修改就可以被用户使用。但是有些不能直接导出,让用户使用,需要做一些处理: