在最在查看start_kerenl代码时,发现do_initcalls()函数中有调试开关initcall_debug,该开关可以通过惟下两种方式来打开
1)命令行
CONFIG_CMDLINE="console=ttyS0,115200 revisionid_base=0x18060090 initcall_debug=1"
2) 在系统启动后,通过echo命令打开
echo 1>/proc/XXX/initcall_debug
可以得知,如果我们要定义自己的变量是否可能通过相同的方式来实现呢?
答案是肯定的
首先我们要在init/main.c中定义一个变量
int initcall_huang;
然后调用core_param()宏来给initcall_huang赋值
core_param(initcall_huang, initcall_huang,bool,0644);
这样就完成了自定义变量的initcall_huang的实现,在后续需要使用的时候可以引用外部变量。
例如,本人在ath_flash_init函数中需要使用这个变量,在ath_flash.c中
extern int initcall_huang;
if(initcall_huang)
{
printk(" debug at %s %d\n",__func__,__LINE__);
}
即可使用。
通过上述方法,可以很好的进行自己的内核开发,经测试,该定义的变量只有在驱动编译到内核是才可能引用,将驱动编译成独立的模块是不能引用 的,原因等待后续研究。
阅读(1302) | 评论(0) | 转发(0) |