-non-preemptable-tasks
指定表示不可抢占任务的函数
语法
-non-preemptable-tasks function1[,function2[,...]]
描述
-non-preemptable-tasks 指定表示不可抢占任务的函数。function1[,function2[,...]]
这些函数不能被其他非周期任务和周期任务中断,但可以被可抢占或不可抢占的中断所中断。非周期任务通过任务 (-entry-points) 选项指定,周期任务通过周期任务 (-cyclic-tasks) 选项指定,而中断则通过中断 (-interrupts) 选项指定。有关示例,请参阅Define Task Priorities for Data Race Detection in Polyspace。
要将某个函数指定为不可抢占的周期任务,必须先将该函数指定为周期任务或非周期任务。您指定的函数必须具有以下原型:
void function_name(void);
在用户界面(仅限 Polyspace® 桌面端产品)中,在配置窗格的其他字段中输入此选项。请参阅其他。
示例
以下面的程序为例。假设函数 task1 和 task2 表示可以并发运行的任务。
int x;
void task1() {
x++;
}
void task2() {
x = 0;
}
void main() {
}
要指定 task1 和 task2 是周期任务,请输入以下命令:
polyspace-bug-finder -sources filename -cyclic-tasks task1,task2
x。将 task1 指定为不可抢占。
polyspace-bug-finder -sources multi.c -cyclic-tasks task1,task2 -non-preemptable-tasks task1
task1 中的 x++ 运算无法再被中断。提示
在 Polyspace as You Code 分析中,此选项无用。
Code Prover 解释此选项时有一些限制,因为 Code Prover 认为所有操作都可能是非原子且可中断的。这种过度近似会导致此选项在某些情况下被忽略。有关示例,请参阅Effect of Task Priorities in Code Prover。
版本历史记录
在 R2016b 中推出