-non-preemptable-tasks
Specify functions that represent nonpreemptable tasks
Syntax
-non-preemptable-tasks
function1
[,function2
[,...]]
Description
-non-preemptable-tasks
specifies
functions that represent nonpreemptable tasks.function1
[,function2
[,...]]
The functions cannot be interrupted by other noncyclic tasks and cyclic tasks
but can be interrupted by interrupts, preemptable or nonpreemptable.
Noncyclic tasks are specified with the option Tasks (-entry-points)
, cyclic
tasks with the option Cyclic tasks (-cyclic-tasks)
and interrupts with the option Interrupts (-interrupts)
. For
examples, see Define Task Priorities for Data Race Detection in Polyspace.
To specify a function as a nonpreemptable cyclic task, you must first specify the function as a cyclic or noncyclic task. The functions that you specify must have the prototype:
void function_name(void);
If you are running an analysis from the user interface
(Polyspace® desktop products only), on the Configuration pane, you can
enter this option in the Other field. See Other
.
Examples
Consider the following program. Suppose that functions
task1
and task2
represent
tasks that can run concurrently.
int x; void task1() { x++; } void task2() { x = 0; } void main() { }
To specify that task1
and task2
are
cyclic tasks, enter the
following:
polyspace-bug-finder -sources filename -cyclic-tasks task1,task2
x
.Specify task1
as nonpreemptable.
polyspace-bug-finder -sources multi.c -cyclic-tasks task1,task2 -non-preemptable-tasks task1
x++
in task1
cannot be interrupted anymore.Tips
This option is not useful in a Polyspace as You Code analysis.
Code Prover interprets this option with some limitations. The reason is that Code Prover considers all operations as potentially non-atomic and interruptible. This overapproximation leads to situations where the option might appear to be ignored. For an example, see Effect of Task Priorities in Code Prover.
Version History
Introduced in R2016b