Установить, опросить или удалить обработчик уведомлений
#include <sys/iofunc.h>int iofunc_notify( resmgr_context_t *ctp,io_notify_t *msg,iofunc_notify_t *nop,int trig,const int *notifycounts,int *armed );
_NOTIFY_MAXCOND
. _NOTIFY_COND_INPUT
, _NOTIFY_COND_OUTPUT
и _NOTIFY_COND_OBAND
, и дополнительно можно установить _NOTIFY_COND_EXTEN
, чтобы указать следующие расширенные события: Установка флага_NOTIFY_COND_INPUT == _NOTIFY_CONDE_RDNORM_NOTIFY_COND_OUTPUT == _NOTIFY_CONDE_WRNORM_NOTIFY_COND_OBAND == _NOTIFY_CONDE_RDBAND
_NOTIFY_COND_EXTEN
влияет на параметр armed. Обычно это значение устанавливается в зависимости от условий в момент вызова.NULL
или массив целых чисел, обозначающих сколько элементов должно присутствовать в очереди каждого события, представленного в массиве nop, чтобы событие сработало. Этот массив и массив nop должны содержать одинаковое количество элементов. Обратите внимание, что если какое-либо из условий выполнено, то ничего не включается. Только если ни одно из условий не выполняется, событие включается в соответствии с параметром notifycounts. Если этот параметр NULL
, то все счётчики равны единице.NULL
или указатель на буфер, в который функция запишет 1
, если уведомление включено, или 0
в противном случае. _NOTIFY_COND_EXTEN
в аргументе trig, а armed не NULL
, то при вызове iofunc_notify(), armed должен содержать количество элементов в массивах nop и notifycounts (при условии, что notifycounts не NULL
. В противном случае функция предполагает, что в массивах nop и notifycounts три элемента.libc
Вспомогательная функция уровня POSIX iofunc_notify() используется менеджером ресурсов для реализации уведомлений.
Эта функция проверяет сообщение, полученное менеджером ресурсов (передаётся в аргументе msg), и определяет, какое действие пытается выполнить пользовательский код:
_NOTIFY_ACTION_POLL
, но включает дополнительные характеристики включения события если ни одно из условий не выполняется. SIGEV_NONE
, то это выключает уведомление. При срабатывании события уведомление автоматически отключается. ЗОСРВ «Нейтрино»
io_notify_t, iofunc_notify_t, iofunc_notify_remove(), iofunc_notify_trigger(), resmgr_context_t, _RESMGR_NPARTS(), struct sigevent
Предыдущий раздел: Описание API системной библиотеки