Temporally exclusive tasks
(-temporal-exclusions-file
)
Specify entry point functions that cannot execute concurrently
Description
This option is not available for code generated from MATLAB® code or Simulink® models.
Specify entry point functions that cannot execute concurrently. The execution of the functions cannot overlap with each other.
Set Option
User interface (desktop products only): In your project configuration, the option is available on the Multitasking node. See Dependencies for other options you must also enable.
User interface (Polyspace Platform, desktop products only): In your project configuration, the option is on the Static Analysis tab on the Multitasking node. See Dependencies for other options you must also enable.
Command line and options file: Use the option
-temporal-exclusions-file
. See Command-Line Information.
Why Use This Option
Use this option to implement temporal exclusion in multitasking code.
A Code Prover verification checks if specifying certain tasks as temporally exclusive protects all shared variables from concurrent access. When determining possible values of those shared variables, the verification accounts for the fact that temporally exclusive tasks do not interrupt each other. See Global Variables (Polyspace Code Prover).
A Bug Finder analysis uses the temporal exclusion information to look for concurrency defects such as data race. See Concurrency Defects.
Settings
No Default
Click to add a field. In each field, enter a space-separated list of functions. Polyspace® considers that the functions in the list cannot execute concurrently.
Enter the function names manually or choose from a list.
Click to add a field and enter the function names.
Click to list functions in your code. Choose functions from the list.
Dependencies
To enable this option in the user interface of the desktop products:
Select the option
Configure multitasking manually
.Specify function names for
Tasks (-entry-points)
,Cyclic tasks (-cyclic-tasks)
andInterrupts (-interrupts)
.
You can then specify some of these functions as temporally exclusive
tasks. Alternatively, if you specify your multitasking configuration using external
files with the option External
multitasking configuration
, some of the functions from your external
files can be specified as temporally exclusive.
The ability to specify temporally exclusive tasks is not supported for automatically
detected thread creation routines such as pthread_create
. These
routines can be invoked at different points in the code to create separate threads.
However, the temporal exclusion option does not support specifying two separate
invocations of the same routine at different points in the code.
Tips
When considering possible values of shared variables, a Code Prover verification takes into account your specifications for temporally exclusive tasks.
However, if the shared variable is a pointer or array, the software uses the specifications only to determine if the variable is a shared protected global variable. For run-time error checking in Code Prover, the software does not take your specifications into account and considers that the variable can be concurrently accessed.
Command-Line Information
For the command-line option, create a temporal exclusions file in the following format:
On each line, enter one group of temporally excluded tasks.
Within a line, the tasks are separated by spaces.
To enter comments, begin with #
. For an example, see
the file
.
Here, polyspaceroot
\polyspace\examples\cxx\Code_Prover_Example\sources\temporal_exclusions.txt
is the Polyspace installation folder, for example polyspaceroot
C:\Program
Files\Polyspace\R2019a
.
Parameter:
-temporal-exclusions-file |
No Default |
Value: Name of temporal exclusions file |
Example (Bug Finder):
polyspace-bug-finder -sources |
Example (Code Prover):
polyspace-code-prover -sources |
Example (Bug Finder Server):
polyspace-bug-finder-server -sources |
Example (Code Prover
Server):
polyspace-code-prover-server -sources
|