在预处理器中识别内核空间?

时间:2018-01-05 10:47:34

标签: c linux-kernel linux-device-driver

我正在编写内核模块的标头。标头是模块已知的,但也被用户空间中的呼叫者使用。这是一个问题,因为使用的某些类型应该包含在不同的文件中,具体取决于标头当前是在用户空间还是内核空间中(或者this问题让我想到)。

我不想保留两个单独的头文件,所以我一直在考虑这样的解决方案:

#ifndef IN_KERNEL
#include <stdint.h>
#else
#include <linux/types.h>

在我的内核代码中的某处定义了IN_KERNEL。是否有预处理器常量已经这样做了?

1 个答案:

答案 0 :(得分:3)

从阅读this开始,用于此目的的现有常量似乎是__KERNEL__

#ifndef __KERNEL__
#include <stdint.h>
#else
#include <linux/types.h>
#endif