mordorwww 发表于 2016-05-04 16:05

编译时内核和用户态接口源代码时,头文件如何判断是内核态还是用户态




如下

#ifdef KERN
#define PRINT printk
#else
#define PRINT printf
#endif

Godbach 发表于 2016-05-04 18:54

回复 1# mordorwww

之所以要区分内核态和用户态,应该对应结构和函数本社就有特殊的应用场景。

内核中还有专门开放出来头文件给用户态去使用,比如 netfilter queue 之类的。

所以不太明白你的需求是什么。一个头文件中还要区分内核态和用户态,那么最好的方法是分开成不同的头文件。


   

mordorwww 发表于 2016-05-04 20:51

本帖最后由 mordorwww 于 2016-05-04 20:55 编辑

Godbach 发表于 2016-05-04 18:54 static/image/common/back.gif
回复 1# mordorwww

之所以要区分内核态和用户态,应该对应结构和函数本社就有特殊的应用场景。


我的需求很简单啊,就是内核态和用户态之间的接口文件源代码,都需要打印同一个数据结构,同样的函数,只是一个是printk,一个是printf而已,我不想写两个一样的函数

流氓无产者 发表于 2016-05-05 09:43

mordorwww 发表于 2016-05-04 16:05 static/image/common/back.gif
如下

#ifdef KERN

你自己不都说了么?
__KERNEL__啊

mordorwww 发表于 2016-05-05 10:36

流氓无产者 发表于 2016-05-05 09:43 static/image/common/back.gif
你自己不都说了么?
__KERNEL__啊


内核的源码/KBUILD 哪里有 __KERNEL__ 这个宏定义?

nswcfd 发表于 2016-05-06 17:37

本帖最后由 nswcfd 于 2016-05-06 17:37 编辑

#grep __KERNEL__ ksrc/Makefile
KBUILD_CPPFLAGS := -D__KERNEL__
页: [1]
查看完整版本: 编译时内核和用户态接口源代码时,头文件如何判断是内核态还是用户态