-cyclic-tasks)Укажите функции, представляющие циклические задачи
Эта опция недоступна для кода, сгенерированного в моделях MATLAB ® или Simulink ®.
Укажите функции, представляющие циклические задачи. Анализ предполагает, что операции в теле функции:
Может выполняться любое количество раз.
Может прерываться нециклическими задачами, другими циклическими задачами и прерываниями. Нециклические задачи задаются опцией Tasks (-entry-points) и прерывания указываются с помощью опции Interrupts (-interrupts).
Чтобы смоделировать циклическую задачу, которая не может быть прервана другими циклическими задачами, укажите задачу как неразрешимую. Посмотрите -non-preemptable-tasks. Примеры см. в разделе Определение преемптируемых прерываний и непропускаемых задач.
Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта эта опция доступна на узле многозадачности. Другие параметры, которые также необходимо включить, см. в разделе Зависимости.
файл командной строки и параметров: Использовать параметр -cyclic-tasks. См. раздел Сведения о командной строке.
Этот параметр используется для указания циклических задач в многозадачном коде. Указанные функции должны иметь прототип:
void function_name(void);
Проверка программы проверки кода использует ваши спецификации для определения:
Является ли глобальная переменная общей.
См. раздел Глобальные переменные (средство проверки кода Polyspace).
Может ли возникнуть ошибка времени выполнения.
Например, если операция var++ возникает в теле циклической задачи, и вы не накладываете ограничения на var, операция может переполниться. Анализ обнаруживает возможное переполнение.
Анализ Bug Finder использует ваши спецификации для поиска дефектов параллелизма. Для Data race дефект, программное обеспечение устанавливает следующие соотношения между упреждаемыми задачами и другими задачами.
Гонка данных между двумя упреждаемыми задачами:
Если они не защищены, две операции в различных упреждаемых задачах могут мешать друг другу. Если операции используют одну и ту же совместно используемую переменную без резервирования, может произойти расстановка данных.
Если обе операции являются атомарными, чтобы увидеть дефект, необходимо включить проверку гонки данных, включая атомарные операции.
Гонка данных между задачей, подлежащей вытеснению, и задачей, не подлежащей вытеснению, или прерыванием:
Атомарная операция в упреждаемой задаче не может вмешиваться в операцию в непериодимой задаче или прерывании. Даже если операции используют одну и ту же общую переменную без защиты, расстановка данных невозможна.
Неатомная операция в упреждаемой задаче также не может вмешиваться в операцию в непериодической задаче или прерывании. Однако последняя операция может прервать первую операцию. Поэтому, если операции используют одну и ту же совместно используемую переменную без защиты, может произойти расстановка данных.
Дополнительные сведения см. в разделе Дефекты параллелизма.
По умолчанию нет
Введите имена функций или выберите их из списка.
Щелкните
для добавления поля и введите имя функции.
Щелкните
, чтобы перечислить функции в коде. Выберите функции из списка.
Чтобы включить этот параметр в интерфейсе пользователя настольных продуктов, сначала выберите этот параметр. Configure multitasking manually.
В программе Code Prover функции, представляющие циклические задачи, должны иметь вид
void functionName (void)
Если функция func принимает аргументы или возвращает значение, его нельзя использовать непосредственно как циклическую задачу. Использовать func как циклическая задача:, вызов func из обертки void-void и укажите обертку как циклическую задачу. Посмотрите Configure multitasking manually.
Если функция указана как циклическая задача, необходимо указать ее определение. В противном случае проверка средства проверки кода прекращается с сообщением об ошибке:
task func_name must be a userdef function without parameters
Анализ Bug Finder продолжается, но не рассматривает функцию как циклическую задачу.
При запуске файла путем проверки файла в программе Code Prover параметры многозадачности игнорируются. Посмотрите Verify files independently (-unit-by-unit).
Многозадачный анализ Polyspace ® предполагает, что задача не может прервать себя.
Параметр: -cyclic-tasks |
| По умолчанию нет |
Значение: |
Пример (поиск ошибок):
polyspace-bug-finder -sources |
Пример (проверка кода): polyspace-code-prover -sources |
Пример (сервер поиска ошибок):
polyspace-bug-finder-server -sources |
Пример (сервер проверки кода):
polyspace-code-prover-server -sources |
-non-preemptable-tasks | -preemptable-interrupts | Interrupts (-interrupts) | Tasks (-entry-points)