__KERNEL__ macro

转载 2013年12月03日 16:37:08

From:    http://blog.csdn.net/songcdut/article/details/8625041


  The __KERNEL__ macro is defined because there is programs (like libraries) that include kernel code and there is many things that you don't want them to include. So most modules will want the__KERNEL__ macro to be enabled.


When you compile your kernel, __KERNEL__ is defined on the command line. (in tree/kernel/Makefile---> KBUILD_CPPFLAGS := -D__KERNEL__)


User-space programs need access to the kernel headers, but some of the info in kernel headers is intended only for the kernel. Wrapping some statements in an#ifdef __KERNEL__/#endif block ensures that user-space programs don't see those statements.


 example:

in the user space ,if you want to include the header using ‘#ifdef __KERNEL__ XXXX', you should define the __KERNEL__.

/*为了引用kernel中的数据结构,我常用如下样式include那些服务于内核的头文件*/

#ifdef __KERNEL__
#include <linux/list.h>
#include <linux/mm.h>
#undef __KERNEL__


/*将两种类型的头文件隔离开来*/
#include <stdio.h>
#include <errno.h>


对于__KERNEL__举例:

#ifdef __KERNEL__
# define HZ        CONFIG_HZ    /* Internal kernel timer frequency */
# define USER_HZ    100        /* User interfaces are in "ticks" */
# define CLOCKS_PER_SEC    (USER_HZ)    /* like times() */
#else
# define HZ        100
#endif

在.config中:

CONFIG_HZ=100

故ISA-32中,HZ=100,而jiffies =10ms

__KERNEL__ 宏作用是什么?

 这个宏在内核及应用程序代码中均能看到。它仅起到判断作用,而不是在实际的代码逻辑中被替换,就如之前讲的避免define重复定义的用法一样。但不同的是这个宏的目的并不是避免重复定义,那么这个宏到底...
  • wjw7869
  • wjw7869
  • 2015年06月08日 16:53
  • 598

__KERNEL__ macro

The __KERNEL__ macro is defined because there is programs (like libraries) than include kernel code ...

The Detailed explanation of __initdata macro in linux kernel

The __init and __exit declarations are special kernel macrosdesigned to tell the kernel to flag thes...
  • msephd
  • msephd
  • 2012年08月13日 11:05
  • 507

服务器监控系统Zabbix的media、graphs、templates、macro图解教程(第三章)

(11)定义meida媒介,并对指定用户添加media: 示例一(Mail): 注意:实际生产中,一般会购买企业级的邮箱业务;因为自己搭的邮件业务,会被互联网上的邮箱当作垃圾,拒绝接收; 示例...
  • han156
  • han156
  • 2017年12月10日 11:52
  • 10

【FreeMarker】【模板文件FTL】模板自定义指令 macro

自定义指令macro 自定义指令可以使用 macro 指令来定义,这是模板设计者所关心的内容。Java程序员若不想在模板中实现定义指令,而是在Java语言中实现指令的定义,这时可以使用freem...

[editor]Source Insight编辑器的快捷键设置暨相关宏语言(Macro Language)的学习一

今天壁纸突然变成了一幅图,图里有句话:“人的乐趣之一就是去完成那些别人认为你完成不了的事”。所以就有了这篇博文。如果没有这句话,此篇博文还要晚上几天才能发出来。感谢百度壁纸软件予我醍醐灌顶(微笑脸)。...

VBA Macro 自动画图

Excel 画图 Sub AddCharts() Dim i, j, k, start As Integer Dim ch As ChartObject Dim ...

freemarker Macro使用小记 分页

现在项目中不少的地方都用到的freemarker,但是自己一直都是调用别人已经写好的Macro,没怎么过多的去关注它,近期在开发一个新的功能的时候自己终于有机会来写了。  引用 我这个...
  • ccecwg
  • ccecwg
  • 2015年01月05日 16:48
  • 598

C++预处理命令#define宏(macro)展开的若干用法

提及#define,你会不会马上联想到自己时时用#define MAX 100用于标记一个数组的长度?这样做无非两个原因,一来,#define是编译时的宏展开,对运行时间毫无影响。其二,使用诸如MAX...
  • ajioy
  • ajioy
  • 2011年10月12日 19:44
  • 6683

宏汇编macro

一、宏汇编    宏定义是用一组伪操作来实现的。其格式是:    macro_name    MACRO    [dumny_parameter_list]                   ......
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:__KERNEL__ macro
举报原因:
原因补充:

(最多只允许输入30个字)