社区
Qualcomm 开发者论坛
帖子详情
请问除了MSLEEP和ISHELL_SETTIMER之外,还有让程序延时的方法吗
asianeagle
2009-05-22 11:25:23
我现在是手机启动时要启动一个应用,但在EVT_NOTIFY里收到消息的时候,许多环境都还没有初始化好,所以MSLEEP和ISHELL_SETTIMER用了都不起效,不知道还有什么方法来让我的程序延时处理啊
...全文
606
6
打赏
收藏
请问除了MSLEEP和ISHELL_SETTIMER之外,还有让程序延时的方法吗
我现在是手机启动时要启动一个应用,但在EVT_NOTIFY里收到消息的时候,许多环境都还没有初始化好,所以MSLEEP和ISHELL_SETTIMER用了都不起效,不知道还有什么方法来让我的程序延时处理啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
发现心流
2009-05-24
打赏
举报
回复
呵呵,厂商一般都是初始化失败 settimer(50ms), 继续初始化,直到成功为止
lz应该发扬不怕死机的精神放心大胆的搞
hhygcy
2009-05-22
打赏
举报
回复
你收到了notify消息的时候继续初始化有问题吗?
你在后台启动这个notify和start就是一个意思
tx040316
2009-05-22
打赏
举报
回复
如果只是想延时很简单啊,用一个while循环啊:
int time = GETTIMEMS();
while(GETTIMEMS()-time<80)
{
};
你想要多长就修改上面的80就行了。这个最好是在初始化完后,还没有进行SOCKET操作前调用。
asianeagle
2009-05-22
打赏
举报
回复
我不是关心初始化,我要做的是当机器启动的时候自动运行BREW程序,我的BREW程序是用ISOCKET对外发包,问题是我发现刚收到EVT_NOTIFY消息就去进行ISOCKET操作会失败,所以我想让程序停一下再初始化ISOCKET,但这个时候MSLEEP和SetTimer也无效,都没法使用
hhygcy
2009-05-22
打赏
举报
回复
[Quote=引用 2 楼 wireless_com 的回复:]
如果你是手机厂商,就有很多办法,如果是一般开发者,你为什么要关心初始化呢?
[/Quote]
我相信, 你是不是厂商啊? 好像对这个很了解哦
半吊子全栈工匠
2009-05-22
打赏
举报
回复
如果你是手机厂商,就有很多办法,如果是一般开发者,你为什么要关心初始化呢?
内核定时机制API之m
sleep
和 m
sleep
_interruptible
void m
sleep
(unsigned int msecs) 用于睡眠一段时间。不能用于原子环境 其源码分析如下: void m
sleep
(unsigned int msecs) { #可见timeout的时间是在形参的基础上再加一个jiffies,这也说明m
sleep
睡眠的后wakeup #的时间不是很准确,一般会在时间到期后的下一个jiffies再wakeup unsigned lo
m
sleep
和m
sleep
_interruptible
原来m
sleep
还有个弟弟 /** * m
sleep
-
sleep
safely even with waitqueue interruptions * @msecs: Time in milliseconds to
sleep
for */ void m
sleep
(unsigned int msecs) { unsigned long timeout = msecs_to_jiffies(msecs) + 1; while (timeout) timeout = schedule_tim
linux kernel --- 延迟函数udelay m
sleep
u
sleep
_range...
linux 驱动开发过程中,经常会用到延迟函数:udelay,mdelay,u
sleep
,m
sleep
,u
sleep
_range… 一、mdelay和m
sleep
的本质区别 1、从模块本身分析: mdelay,属于忙等待函数(相当于for循环),在延迟过程中无法运行其他任务,这个时间是准确的,需要等待多少实际就会等待多少时间; m
sleep
,属于休眠函数,不会忙等待,时间是不准确的,比如m
sleep
(200),大概率是会等待多于200ms的。 2、从系统角度分析: mdelay,会占用系统资源,导致其他功能
内核
延时
函数m
sleep
和mdelay的区别
m
sleep
和mdelay都是内核的
延时
函数,原型如下: void mdelay(unsigned long msecs); void m
sleep
(unsigned int millisecs); 区别 mdelay是忙等待函数,会占用CPU资源,延迟时间是准确的。 m
sleep
是休眠函数,不占用CPU资源,延迟时间通常高于给定值。 具体可以参考如下文章: The difference between Mdelay and M
sleep
in Linux Linux中内核
延时
函数 ...
Linux时间子系统之七:定时器的应用--m
sleep
(),hr
timer
_nano
sleep
()
这里的循环体实现比较怪异,它使用hr
timer
_active函数间接地判断定时器是否到期,如果hr
timer
_active返回false,说明定时器已经过期,然后把hr
timer
_
sleep
er结构的task字段设置为NULL,从而导致循环体的结束,另一个结束条件是当前进程收到了信号事件,所以,当因为是定时器到期而退出时,do_nano
sleep
返回true,否则返回false,上述的hr
timer
_nano
sleep
正是利用了这一特性来决定它的返回值。到这个时候,进程已经被调度走,那它如何返回继续执行?
Qualcomm 开发者论坛
955
社区成员
5,251
社区内容
发帖
与我相关
我的任务
Qualcomm 开发者论坛
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
复制链接
扫一扫
分享
社区描述
为开发者提供高通丰富的解决方案及全面技术下载内容。本版以AI人工智能、WoS移动笔记本、XR、IoT 物联网、Auto 汽车、生成式AI等核心板块组成,为开发者提供一个便捷及高效的学习交流平台。
人工智能
物联网
机器学习
企业社区
北京·东城区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章