ucos移植里的中断调度问题

[复制链接]
 楼主| kedayyc 发表于 2009-7-19 15:22 | 显示全部楼层 |阅读模式
void OSIntExit (void)    
{   
    OS_ENTER_CRITICAL();   
    if ((--OSIntNesting | OSLockNesting) == 0) { /* Reschedule only if all ISRs completed & not locked */   
        OSIntExitY    = OSUnMapTbl[OSRdyGrp];   
        OSPrioHighRdy = (INT8U)((OSIntExitY << 3) + OSUnMapTbl[OSRdyTbl][OSIntExitY]]);   
        if (OSPrioHighRdy != OSPrioCur) {        /* No context switch if current task is highest ready */   
            OSTCBHighRdy  = OSTCBPrioTbl[OSPrioHighRdy];   
            OSCtxSwCtr++;                        /* Keep track of the number of context switches       */   
            OSIntCtxSw();                        /* Perform interrupt level context switch             */   
        }   
    }   
    OS_EXIT_CRITICAL();   
}   
在上述程序里假如 OSIntCtxSw();里进行了任务调度那么
 OS_EXIT_CRITICAL();   这个函数什么时候执行 
该中断应该怎么退出?
那位大侠指导、指导。
            
sufeng983 发表于 2009-7-23 15:54 | 显示全部楼层

中断任务切换,也要等中断函数执行完。

sufeng983 发表于 2009-7-23 16:03 | 显示全部楼层

2

你在公司上班,正在整理资料(任务1)。
突然想WC(中断),
在坑上,接到老总电话,叫你去办公室(任务2)(你不可能先整理完资料再去,因为他是老总)。
但是你总得上完WC,然后直接去他办公室,而不是先拿起资料看一眼,再去办公室。
但是PP总得要擦吧。不管是国家主席叫你,还是谁叫你,最后一步少不了。中断任务切换,只是告诉你,从WC出来,直接去切换后的目标(办公室),而且不是去原来的目标望望,再转目标。
中断级任务切换,省去了,你去自己的办公室,再转去老总办公室的麻烦。但是PP总得要擦的。
zchong 发表于 2009-7-23 16:51 | 显示全部楼层

是不是这样的

是不是这样的:
执行OSIntCtxSw()后,只是改变了堆栈等信息,并不是直接进行了任务切换,OSIntCtxSw()巧妙地把中断返回地址设置成了将要执行的最高优先级的就绪任务
sufeng983 发表于 2009-7-23 17:22 | 显示全部楼层

就是免去了,切换回原来任务,再重新切换到高级任务,免去一次切换。
nenozyp 发表于 2009-7-24 13:10 | 显示全部楼层

sufeng983的wc比喻有意思

   
   wc比喻比较有意思的,实际上ucos-ii调度本质就是任何时候让高优先级的任务运行,当然是最快的切换方式,所以说免去了切换原来任务的时间。
fe_arm 发表于 2009-7-26 12:52 | 显示全部楼层

这个比喻有点意思

qiyinxian 发表于 2012-7-20 15:44 | 显示全部楼层
你在公司上班,正在整理资料(任务1)。突然想WC(中断),在坑上,接到老总电话,叫你去办公室(任务2)(你不可能先整理完资料再去,因为他是老总)。但是你总得上完WC,然后直接去他办公室,而不是先拿起资料看一 ...
sufeng983 发表于 2009-7-23 16:03




mark
yifeng1118 发表于 2012-7-28 15:19 | 显示全部楼层
1# kedayyc
前面的说法都是针对线程的切换来说,这里说说LZ说的问题,因为切换线程里的压入的PSW里面会有进入中断的时候的中断的状态。
所以在弹出的时候会自动恢复中断的标志,不需要再返回 OS_EXIT_CRITICAL()去保证开中断或者还原。所以不用担心。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部