exponenta event banner

Прерывания (-interrupts)

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

Описание

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

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

Задать опцию

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

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

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

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

void function_name(void);

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

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

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

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

    Например, если операция var=INT_MAX; возникает в прерывании и 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 ® предполагает, что прерывание не может прервать само себя.

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

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