Chinaunix首页 | 论坛 | 博客
  • 博客访问: 97794
  • 博文数量: 17
  • 博客积分: 37
  • 博客等级: 民兵
  • 技术积分: 217
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-09 18:24
文章分类
文章存档

2016年(4)

2015年(3)

2014年(9)

2011年(1)

我的朋友

分类: LINUX

2014-07-25 09:36:44

在最在查看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__);
}
即可使用。
通过上述方法,可以很好的进行自己的内核开发,经测试,该定义的变量只有在驱动编译到内核是才可能引用,将驱动编译成独立的模块是不能引用 的,原因等待后续研究。
阅读(1277) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~