关于任务锁和中断锁

禁止任务调度:taskLock
允许任务调度:taskUnlock
调用taskLock的任务会一直执行,而不会被其他任务抢占(除了中断,当然可以禁止中断),
除非任务自己调用系统函数被阻塞,另一任务才能被调入执行。

禁止中断:intLock
重新允许中断:intUnlock
为了保护临界代码不被中断打断,可以用上面两函数实现。
用intLock闭锁中断后,当前的执行进程可一直继续,任何任务和中断都不会插入执行,直到使用intUnlock主动解锁,才能恢复任务调度和中断处理。
注意:不要在中断闭锁期间调用vxworks系统函数,否则有可能意外打开中断闭锁。

中断处理函数的代码限制:
由于中断处理函数不是在通常的任务上下文中运行,没有任务控制块,所以中断处理共享同一栈空间,所以中断处理函数不能调用会引起阻塞的系统函数,如取信号量,内存操作,IO操作,硬浮点操作等。

(0)

相关推荐