Системные события

Все события принадлежат системе в целом, количество событий ограниченно (максимальное количество событий указано в вашем индивидуальном задании). События имеют идентификаторы SYS_EVENT_1, SYS_EVENT_2, ….

Каждая задача может ожидать одно или несколько из этих событий. Эти события задаются маской событий, которая является структурой данных типа TEventMask (реализуется разработчиком ОСРВ, используется в качестве типа входного параметра в сервисах ОСРВ, связанных с событиями - см. документ "Спецификация API"). Формирование маски осуществляется операцией add_mask. Например (маска на события 1 и 12):

TEventMask mask;

mask= SYS_EVENT_1 add_mask SYS_EVENT_12;

Маски:

1. В системе существует одна маска установленных событий.

2. Каждая задача имеет маску ожидаемых событий.

Задача, находящаяся в состоянии выполнения может начать ожидание событий задаваемых маской и перейти в состояние waiting (предыдущая маска ожидания должна быть сброшена). В состояние ready (возможно running) перейдут все задачи находившиеся в состоянии waiting, и ожидавшие хотя бы одно из произошедших событий. В маске ожидаемых событий каждой “дождавшейся” задачи признаки ожидания произошедших событий должны быть сброшены, признаки ожидания остальных событий должны быть оставлены. Признаки произошедших событий, ожидаемых хотя бы одной задачей (события которых «дождалась» хоть одна задача) в системной маске установленных событий должны быть сброшены до перехода задачи в состояние ready (возможно running).

Установка событий, не ожидаемых задачей, не должна приводить к изменению состояния задачи.

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

Работа с системными событиями может осуществляться любой задачей.

Требования к API

В этой главе перечислены сервисы из "Спецификации API", которые должны поддерживаться проектами RTOS, выполняемыми в качестве индивидуальных заданий.

Сервисы, которые должны быть реализованы в каждом индивидуальном задании:

- DeclareTask

- ActivateTask

- TerminateTask

- StartOS

- SutdownOS


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: