Chinaunix首页 | 论坛 | 博客
  • 博客访问: 217567
  • 博文数量: 49
  • 博客积分: 2101
  • 博客等级: 大尉
  • 技术积分: 525
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-07 10:38
文章分类

全部博文(49)

文章存档

2010年(49)

我的朋友

分类: 嵌入式

2010-09-07 14:05:48

今天看到一篇帖子,让我想起了这些年碰到的误用LogMsg导致的系统问题。

    还是先看看LogMsg的工作机理。LogMsg利用消息队列将用户所发的消息传送给LogTask,然后由LogTask将其显示在屏幕或者其他输出设备上。而VxWorks默认的LogTask的任务优先级很高,这就直接导致了任务的切换。

    切换是这样发生的,假设用户任务usrTask的优先级是51级(通常要低于网络任务50级,一般在100级以后),而我记忆中的LogTask1级任务,仅次于中断响应。当usrTask调用LogMsg的时候,LogTask解除阻塞状态,获得CPU资源,而usrTask则排队到就绪任务队列去了。LogTask释放CPU资源后,就绪队列中的第一个任务开始执行,usrTask则继续在就绪队列里等待,呵呵。

    所以在通常情况下,在中断处理函数中使用LogMsg就可以了,在任务中使用LogMsg是近乎画蛇添足的举动。

阅读(1668) | 评论(0) | 转发(0) |
0

上一篇:如何在中断中打印

下一篇:任务异常

给主人留下些什么吧!~~