当前位置:  技术问答>linux和unix

内核定时器使用的错误

    来源: 互联网  发布时间:2016-08-26

    本文导语:  想使用内核定时器来对开发板上的灯,定时的点亮、关闭,相成闪烁的效果。在用户态应用程序调用这个驱动时,linux直接崩溃了,问题出在定时器调用的那个函数中: void led_twinkle_timer_function(unsigned long arg) {    ...

想使用内核定时器来对开发板上的灯,定时的点亮、关闭,相成闪烁的效果。在用户态应用程序调用这个驱动时,linux直接崩溃了,问题出在定时器调用的那个函数中:

void led_twinkle_timer_function(unsigned long arg)
{
    if (!led_twinkle_status)
    {
        myled_ioctl_led_on();
        //printk(KERN_ALERT"led on n");
        led_twinkle_status = 1;
    }
    else
    {
        myled_ioctl_led_off();
        //printk(KERN_ALERT"led off n");
        led_twinkle_status = 0;
    }

    mod_timer(&myled_dev->s_timer, jiffies+HZ);
}

执行到myled_ioctl_led_on()或者myled_ioctl_led_off()时就出错了。奇怪的是如果把这两个函数禁掉,直接printk,是正常的。函数中就是调用了一个内核中的函数,而且不用时钟,直接调用时是正常的。

void myled_ioctl_led_on(void)
{
    cpm2_set_pin(2, 13, CPM_PIN_OUTPUT|CPM_PIN_GPIO|CPM_PIN_VALUE_0);
}

|
在内核定时器的上下文中,代码会受到许多限制。定时器函数必须原子地运行:
1)不允许访问用户空间
2)不能访问current指针
3)不能执行休眠或这调度,schedule或者wait_event,或者kmalloc等等。

|
ioremap在时钟中断的函数中不能这么使用吗?

ioremap 可能会引起休眠。。。

寒。 去看了一下那个帖子, 我居然也有回复。。

|
有错误信息吗?

|
我也遇到过定时器引起kernel 崩溃的问题, 没找到原因,关注一下,呵呵。

    
 
 

您可能感兴趣的文章:

  • 关于内核定时器的简单模块编程,但是导致系统崩溃,请高手看看。
  • Linux内核信号量和定时器问题请教:
  • linux内核定时器
  • 内核编译出现前所未有的错误
  • 我向linux内核里加载模块时出现段错误
  • ft! 重构内核时的编译错误!!!
  • 请教一个问题:程序在Linux 2.4.20内核上跑无问题。但在2.4.19内核上跑就出现段错误现象。查了一星期,毫无头绪,万望各位指点。
  • 内核安装错误,请教!
  • 急:加载内核模块时出现unresolved symbol错误
  • 急:内核模块加载时出现unresolved symbol错误
  • 内核编译的一个错误
  • 编译内核后重启出现错误
  • 编译内核有错误怎么办?
  • 本人菜鸟,编译Linux内核时出现如下错误!!请求帮助
  • 大侠帮我看一下,内核的read_lock_failed错误。
  • 编写内核模块程序的makefile文件make错误
  • 编译2.6的内核时遇到一个错误
  • 编译内核后出现如下错误
  • 内核编译后的错误!!
  • 内核启动错误,高分请高手指点。。。
  • 编译内核 有谁见过这个错误呀
  • 在LINUX下的一段内核与用启进程通信的程序。出现下的错误
  • **** 2.6内核插入模块的时候出现vermagic错误 ****
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Linux内核中影响tcp三次握手的一些协议配置
  • Fedora Core 2自带的内核升级程序下载下来内核后,要不要再编译一遍内核?
  • TCP协议四次断连过程介绍及Linux内核协议栈中相关设置项
  • 进程内核栈和操作系统内核栈的关系
  • CentOS 6内核升级:下载编译启用新内核版本详细过程
  • Linux中内核线程不访问内核态地址空间? iis7站长之家
  • Linux进程的内核栈和用户栈概念,相互关系及切换过程
  • 2.6内核下编译2.4内核
  • linux内核中的likely宏和unlikely宏介绍及用法
  • 谁能提供kgdb内核补丁内核模块的下载
  • CentOS 6.5 下载地址及如何升级内核(kernel)版本到 3.10.28
  • 编译新内核后怎么进入原来内核
  • Linux下c/c++开发之程序崩溃(Segment fault)时内核转储文件(core dump)生成设置方法
  • 请问linux中如何判断内核是否已经启动。(在内核中写程序)
  • docker使用的技术之Container内核原理介绍
  • 内核模块跟内核版本不匹配????????
  • 请教:如何安装新内核(rpm包)而不同原来得内核冲突?? 在线等待!!
  • linux为什么要升级内核?升级内核有何作用?
  • 内核升级后,如何在新的内核中加载显卡驱动?
  • 内核源码和结果make过的内核源码有什么区别
  • 不重新编译内核能修改内核函数吗?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3