__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
  • 698

__KERNEL__ macro

The __KERNEL__ macro is defined because there is programs (like libraries) than include kernel code ...
  • SongCdut
  • SongCdut
  • 2013年03月01日 10:35
  • 2765

Freemaker <#macro>(宏)的使用

关键字: 的使用 来源网址:http://jayjunyu.javaeye.com/blog/215727 用户定义指令-使用@符合来调用 有两种不同的类型:Macro(宏)和tran...
  • toto1297488504
  • toto1297488504
  • 2012年11月18日 00:51
  • 1946

C/C++中macro的一些特殊使用

ISO C++推出之后,C/C++中宏(macro)的使用一直都备受争议,就好像当年保守诟病的goto语句一样。有所不同的是,现在的C/C++代码中使用goto语句的使用率是越来越少了。而macro仍...
  • shinco
  • shinco
  • 2004年10月30日 01:26
  • 3409

程序中出现unexpected end of file in macro expansion

这是在宏扩展的文件意外结束的意思,说的是你用宏时没有收尾: 例如 #define max(a,b) a>b?a:b 假如你用宏的时候你缺了右括号   如 max(3,5;  编译器就会报这种错,...
  • xexiyong
  • xexiyong
  • 2013年07月06日 10:02
  • 5556

宏汇编MACRO

宏汇编     宏定义是用一组伪操作来实现的。其格式是:     macro_name    MACRO    [dumny_parameter_list]                   ...
  • Fengjingdisan
  • Fengjingdisan
  • 2017年12月08日 12:38
  • 118

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

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

freemarker macro(宏)的使用

本文转载自:http://blog.chinaunix.net/uid-725717-id-2060340.html 有人说用freemarker,但没有用到它的宏(macro),就=没有真...
  • u011484820
  • u011484820
  • 2013年09月04日 14:34
  • 2031

C语言学习笔记(八) -宏定义 Macro Definition

预处理命令与符号/* 预处理命令:以#号开头,只做文本替换,不做语法判断 不是c语句,不需要在行末加‘;’,符号名要使用大写 预定义符号:__FILE__ ;__LIN...
  • wangzi11322
  • wangzi11322
  • 2015年03月16日 18:30
  • 1573

C语言中宏(macro)的特殊用法

SimpleScalar的源代码中对macro的运用可以说是炉火纯青,丰富的macro使得代码简介,逻辑清晰,但是也给我这些初学者们阅读代码造成了障碍,下面将几篇找到的相关资料贴出来,希望能对大家有用...
  • dragon101788
  • dragon101788
  • 2012年04月17日 12:06
  • 2717
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:__KERNEL__ macro
举报原因:
原因补充:

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