void OSIntExit (void)<br />{<br />#if OS_CRITICAL_METHOD == 3 <br /> OS_CPU_SR cpu_sr;<br />#endif<br /> <br /> <br /> if (OSRunning == TRUE) {<br /> OS_ENTER_CRITICAL();<br /> if (OSIntNesting > 0) { <br /> OSIntNesting--;<br /> }<br /> if ((OSIntNesting == 0) && (OSLockNesting == 0)) { <br /> OSIntExitY = OSUnMapTbl[OSRdyGrp]; <br /> OSPrioHighRdy = (INT8U)((OSIntExitY << 3) + OSUnMapTbl[OSRdyTbl][OSIntExitY]]);<br /> if (OSPrioHighRdy != OSPrioCur) { <br /> OSTCBHighRdy = OSTCBPrioTbl[OSPrioHighRdy];<br /> OSCtxSwCtr++; <br /> OSIntCtxSw(); <br /> }<br /> }<br /> OS_EXIT_CRITICAL();<br /> }<br />}<br />上面程序中的OSIntCtxSw();相当于执行return;<br />因为includes.h中有宏定义<br />#define OSIntCtxSw() return<br />执行这个return除了程序返回之外,还有其他什么作用?? |
|