当前位置: 技术问答>linux和unix
两个问题一起问,Source Insight ,__setup("nosmp", nosmp);
来源: 互联网 发布时间:2015-04-12
本文导语: 问题甲: 怎样配置Source Insight 来看linux的源代码,能从变量、函数使用或调用的地方直接转到变量或函数定义的地方。 问题已: 在includelinuxinit.h里面__setup 宏定义如下: #define __setup(str, fn) static char __setup_s...
问题甲:
怎样配置Source Insight 来看linux的源代码,能从变量、函数使用或调用的地方直接转到变量或函数定义的地方。
问题已:
在includelinuxinit.h里面__setup 宏定义如下:
#define __setup(str, fn)
static char __setup_str_##fn[] __initdata = str;
static struct obs_kernel_param __setup_##fn
__attribute__((unused,__section__ (".init.setup")))
= { __setup_str_##fn, fn }
在initmain.c里面有这样的代码:
__setup("nosmp", nosmp); 其中nosmp是个静态函数的名字。
请高手看看我对这行代码的理解对不对:
宏展开结果如下;
static char_setup_str_nosmp[] _initdata="nosmp";
static struct obs_kernel_param_setup_nosmp
__attribute__((unused,__section__ (".init.setup")))
= { _setup_str_nosmp,nosmp }
我认为它通过 __setup("nosmp", nosmp) 宏完成了两个静态变量的定义,但是有个疑问就是,结构型变量 struct obs_kernel_param_setup_nosmp 没有经过定义,
直接给里面的域赋值,一个是字符串指针,一个是函数指针,我记得 c 语言面应该
先对结构型变量 struct obs_kernel_param_setup_nosmp 定义才对啊!!
请高手解惑!!!
怎样配置Source Insight 来看linux的源代码,能从变量、函数使用或调用的地方直接转到变量或函数定义的地方。
问题已:
在includelinuxinit.h里面__setup 宏定义如下:
#define __setup(str, fn)
static char __setup_str_##fn[] __initdata = str;
static struct obs_kernel_param __setup_##fn
__attribute__((unused,__section__ (".init.setup")))
= { __setup_str_##fn, fn }
在initmain.c里面有这样的代码:
__setup("nosmp", nosmp); 其中nosmp是个静态函数的名字。
请高手看看我对这行代码的理解对不对:
宏展开结果如下;
static char_setup_str_nosmp[] _initdata="nosmp";
static struct obs_kernel_param_setup_nosmp
__attribute__((unused,__section__ (".init.setup")))
= { _setup_str_nosmp,nosmp }
我认为它通过 __setup("nosmp", nosmp) 宏完成了两个静态变量的定义,但是有个疑问就是,结构型变量 struct obs_kernel_param_setup_nosmp 没有经过定义,
直接给里面的域赋值,一个是字符串指针,一个是函数指针,我记得 c 语言面应该
先对结构型变量 struct obs_kernel_param_setup_nosmp 定义才对啊!!
请高手解惑!!!
|
来回答第一个问题,呵呵,简单的。再source insight 新建一个project.然后把你要看得文件都加到这个project里,呵呵~ 然后,就不说了……
|
你的扩展是对的。
注意:
static struct obs_kernel_param __setup_##fn
__attribute__((unused,__section__ (".init.setup")))
obs_kernel_param__setup_##fn
这个东西obs_kernel_param应该是定义过的。
注意:
static struct obs_kernel_param __setup_##fn
__attribute__((unused,__section__ (".init.setup")))
obs_kernel_param__setup_##fn
这个东西obs_kernel_param应该是定义过的。
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。