msleep函数使用——触摸屏驱动

    再写一个触摸屏驱动的时候,在中端处理函数中想用一个ssleep函数让中断等待,以便观察结果,结果运行到这里出现错误。通过google和查书最终找到了答案。

void msllep(unsigned int millisecs);

unsigned long msleep_interruptible(unsigned int millisecs);

void ssleep(unsigned int secounds);

这三个函数的功能是实现进程休眠。他们与下面三个函数使用时不同的。

#include<linux/delay.h>

void ndelay(unsigned long nsecs);                    //纳秒延时

void udelay(unsigned long usecs);                    //微秒延时

void mdelay(unsigned long msecs);    //毫秒延时

这三个函数都是忙等待函数

在程序处于进程上下文之外(比如在中断上下文中),必须遵守如下规则:(详细可参见linux设备驱动第三版P197)。

1、不允许访问用户空间。

2、current指针在原子模式下是没有任何意义的,也是不可用的,因为相关代码和被中断的进程没有任何联系。

3、不能执行休眠或调度。(主要是这个原因引起的)。

呵呵,问题解决。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值