exponenta event banner

Циклические задачи (-cyclic-tasks)

Укажите функции, представляющие циклические задачи

Описание

Эта опция недоступна для кода, сгенерированного в моделях MATLAB ® или Simulink ®.

Укажите функции, представляющие циклические задачи. Анализ предполагает, что операции в теле функции:

Задать опцию

Пользовательский интерфейс (только для настольных ПК): в конфигурации проекта эта опция доступна на узле многозадачности. Другие параметры, которые также необходимо включить, см. в разделе Зависимости.

файл командной строки и параметров: Использовать параметр -cyclic-tasks. См. раздел Сведения о командной строке.

Зачем использовать этот параметр

Этот параметр используется для указания циклических задач в многозадачном коде. Указанные функции должны иметь прототип:

void function_name(void);

Проверка программы проверки кода использует ваши спецификации для определения:

  • Является ли глобальная переменная общей.

    См. раздел Глобальные переменные.

  • Может ли возникнуть ошибка времени выполнения.

    Например, если операция var++ возникает в теле циклической задачи, и вы не накладываете ограничения на var, операция может переполниться. Анализ обнаруживает возможное переполнение.

Анализ Bug Finder использует ваши спецификации для поиска дефектов параллелизма. Для Data race дефект, программное обеспечение устанавливает следующие соотношения между упреждаемыми задачами и другими задачами.

  • Гонка данных между двумя упреждаемыми задачами:

    Если они не защищены, две операции в различных упреждаемых задачах могут мешать друг другу. Если операции используют одну и ту же совместно используемую переменную без резервирования, может произойти расстановка данных.

    Если обе операции являются атомарными, чтобы увидеть дефект, необходимо включить проверку гонки данных, включая атомарные операции.

  • Гонка данных между задачей, подлежащей вытеснению, и задачей, не подлежащей вытеснению, или прерыванием:

    • Атомарная операция в упреждаемой задаче не может вмешиваться в операцию в непериодимой задаче или прерывании. Даже если операции используют одну и ту же общую переменную без защиты, расстановка данных невозможна.

    • Неатомная операция в упреждаемой задаче также не может вмешиваться в операцию в непериодической задаче или прерывании. Однако последняя операция может прервать первую операцию. Поэтому, если операции используют одну и ту же совместно используемую переменную без защиты, может произойти расстановка данных.

Дополнительные сведения см. в разделе Дефекты параллелизма.

Настройки

По умолчанию нет

Введите имена функций или выберите их из списка.

  • Щелкните для добавления поля и введите имя функции.

  • Щелкните, чтобы перечислить функции в коде. Выберите функции из списка.

Зависимости

Чтобы включить этот параметр в интерфейсе пользователя настольных продуктов, сначала выберите этот параметр. Configure multitasking manually.

Совет

  • В программе Code Prover функции, представляющие циклические задачи, должны иметь вид

    void functionName (void)

  • Если функция func принимает аргументы или возвращает значение, его нельзя использовать непосредственно как циклическую задачу. Использовать func как циклическая задача:, вызов func из обертки void-void и укажите обертку как циклическую задачу. См. раздел Настройка многозадачного анализа в многозадачном пространстве вручную.

  • Если функция указана как циклическая задача, необходимо указать ее определение. В противном случае проверка средства проверки кода прекращается с сообщением об ошибке:

    task func_name must be a userdef function without parameters

    Анализ Bug Finder продолжается, но не рассматривает функцию как циклическую задачу.

  • При запуске файла путем проверки файла в программе Code Prover параметры многозадачности игнорируются. Посмотрите Verify files independently (-unit-by-unit).

  • Многозадачный анализ Polyspace ® предполагает, что задача не может прервать себя.

Информация командной строки

Параметр: -cyclic-tasks
По умолчанию нет
Значение: function1[,function2[,...]]
Пример (поиск ошибок): polyspace-bug-finder -sources file_name -cyclic-tasks func_1,func_2
Пример (проверка кода): polyspace-code-prover -sources file_name -cyclic-tasks func_1,func_2
Пример (сервер поиска ошибок): polyspace-bug-finder-server -sources file_name -cyclic-tasks func_1,func_2
Пример (сервер проверки кода): polyspace-code-prover-server -sources file_name -cyclic-tasks func_1,func_2
Представлен в R2016b