在预处理器中识别内核 space?
Identifying kernel space in the preprocessor?
我正在编写内核模块的header。 header 为模块所知,但也被用户 space 中的调用者使用。这是一个问题,因为使用的某些类型应该包含在不同的文件中,具体取决于 header 当前在用户还是内核 space 中(或者 this 问题让我想到)。
我不想维护两个单独的 header 文件,所以我一直在想这样的解决方案:
#ifndef IN_KERNEL
#include <stdint.h>
#else
#include <linux/types.h>
IN_KERNEL 在我的内核代码中某处定义。是否有预处理器常量已经执行此操作?
从阅读 this 来看,用于此目的的现有常量似乎是 __KERNEL__
。
#ifndef __KERNEL__
#include <stdint.h>
#else
#include <linux/types.h>
#endif
我正在编写内核模块的header。 header 为模块所知,但也被用户 space 中的调用者使用。这是一个问题,因为使用的某些类型应该包含在不同的文件中,具体取决于 header 当前在用户还是内核 space 中(或者 this 问题让我想到)。
我不想维护两个单独的 header 文件,所以我一直在想这样的解决方案:
#ifndef IN_KERNEL
#include <stdint.h>
#else
#include <linux/types.h>
IN_KERNEL 在我的内核代码中某处定义。是否有预处理器常量已经执行此操作?
从阅读 this 来看,用于此目的的现有常量似乎是 __KERNEL__
。
#ifndef __KERNEL__
#include <stdint.h>
#else
#include <linux/types.h>
#endif