Синхронизация и взаимодействие программных потоков в операционной среде реального времени. Дорогов А.Ю. - 52 стр.

UptoLike

Составители: 

52
Сервер никогда не изменяет и даже не читает содержимое структуры
sigevent. Уведомление о событии формирует ядро, анализируя аргумент
event в вызове MsgDeliverEvent(). Это позволяет серверу доставлять собы-
тия вне зависимости от выбранного клиентом типа. Тип события указывает-
ся в поле event.sigev_notify структуры sigevent. Прочие поля структуры под-
чинены типу события, все возможные варианты заполнения полей структу-
ры sigevent представлены в табл. 3.10.
Таблица 3.10
sigev_notify sigev_signo sigev_coid sigev_priority sigev_code sigev_value
SIGEV_INTR –
SIGEV_NONE –
SIGEV_PULSE – Connection Priority Code Value
SIGEV_SIGNAL Signal
SIGEV_SIGNAL_CODE Signal Code Value
SIGEV_SIGNAL_THREAD Signal Code Value
SIGEV_THREAD
– – Value
SIGEV_UNBLOCK
Пустые позиции указывают, что соответствующие поля структуры не
используются для данного типа уведомления. Символические обозначения
типа события расшифровываются следующим образом:
SIGEV_INTR – уведомить прерыванием (предназначено для обра-
ботчиков прерываний и не используется для вызова MsgDeliverEvent());
SIGEV_NONE – не посылать уведомления (возможно, клиенту оно
не требуется!);
SIGEV_PULSE – уведомить импульсом с кодом Code и значением
Value. Импульс посылается клиенту по соединению Connection с приорите-
том Priority;
SIGEV_SIGNAL – уведомить сигналом с номером Signal;
SIGEV_SIGNAL_CODE – уведомить сигналом реального времени с
номером Signal, кодом Code и значением Value;
SIGEV_SIGNAL_THREAD – послать сигнал реального времени к
специфицированному потоку;
SIGEV_THREAD – создать новый поток и передать ему параметр
Value;
SIGEV_UNBLOCK – деблокировать поток (используется для форми-
рования реакции на тайм-ауты ядра).