Cyclic tasks (-cyclic-tasks)

Задайте функции, которые представляют циклические задачи

Описание

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

Задайте функции, которые представляют циклические задачи. Анализ принимает, что операции в теле функции:

Задать опцию

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

Командная строка и файл опций: Используйте опцию -cyclic-tasks. См. «Информация о командной строке».

Зачем использовать эту опцию

Используйте эту опцию, чтобы задать циклические задачи в многозадачном коде. Функции, которые вы задаете, должны иметь прототип:

void function_name(void);

Верификация Code Prover использует ваши спецификации, чтобы определить:

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

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

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

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

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

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

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

    Если обе операции являются атомарными, чтобы увидеть дефект, вы должны включить Data race including atomic operations шашки.

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

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

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

Для получения дополнительной информации см. «Дефекты параллелизма».

Настройки

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

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

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

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

Зависимости

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

Совет

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

    void functionName (void)

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

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

    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[,...]]
Пример (Bug Finder): Polyspace Bug Finder -sources file_name -циклические задачи func_1,func_2
Пример (Code Prover): Polyspace Code Prover -sources file_name -циклические задачи func_1,func_2
Пример (Bug Finder Server): polyspace-bug-finder-server -sources file_name -циклические задачи func_1,func_2
Пример (Код Prover Server): Полипространство -code-prover-server -sources file_name -циклические задачи func_1,func_2
Введенный в R2016b