任务切换函数是 OSCtxSw() ,它在切换任务时被调用,具体如何调用的我们下一章节再讲,这里先知道:我们在想要从原任务切换到新任务时,先在原任务中触发一个Trap,再在Trap中调用这个函数。触发Trap的时候会依次自动保存原任务的UCX和LCX(UCX为系统自动保存,LCX的保存是Tasking编译器完成的),从Trap中调用OSCtxSw()的时候,又会保存一个Trap函数的UCX,所以当前PCXI所指向的CSA链表状态是下面这样的:
基于以上信息,我们来看一下OSCtxSw()函数的内容:
① 首先获取PCXI所指向的CSA节点:
/* get pointer to previous context (= current task context) */
/* because OSCtxSw is reached via a call command fr