API определен в заголовочном файле sysroot-*-kos/include/kos/event.h из состава KasperskyOS SDK. Также в составе KasperskyOS SDK поставляется заголовочный файл sysroot-*-kos/include/kos/sync_api.h, который дает возможность транзитивно включить в исходный код программы заголовочный файл event.h и заголовочные файлы для использования других примитивов синхронизации.
API предназначен для синхронизации потоков исполнения на основе событий. Событие – примитив синхронизации, который используется для уведомления одного или нескольких потоков исполнения о выполнении требуемого этим потокам условия. Уведомляемый поток исполнения ожидает, когда событие перейдет из несигнального состояния в сигнальное, а уведомляющий поток исполнения изменяет состояние этого события.
Сведения о функциях API приведены в таблице ниже.
Использование API
Типовой сценарий использования API включает следующие шаги:
Инициализация события вызовом функции KosEventInit().
Использование события потоками исполнения:
Ожидание перехода события из несигнального состояния в сигнальное вызовом функции KosEventWait() или KosEventWaitTimeout() (на стороне уведомляемых потоков исполнения).
Изменение состояния события вызовами функций KosEventSet() и KosEventReset() (на стороне уведомляющих потоков исполнения).
Сведения о функциях API
Функции event.h
Функция
Сведения о функции
KosEventInit()
Назначение
Инициализирует событие.
После инициализации событие находится в несигнальном состоянии.
Параметры
[out] event – указатель на событие. Тип события определен в заголовочном файле sysroot-*-kos/include/kos/sync_types.h из состава KasperskyOS SDK.
Возвращаемые значения
Нет.
KosEventSet()
Назначение
Устанавливает событие в сигнальное состояние.
Параметры
[out] event – указатель на событие. Тип события определен в заголовочном файле sysroot-*-kos/include/kos/sync_types.h из состава KasperskyOS SDK.
Возвращаемые значения
Нет.
KosEventReset()
Назначение
Устанавливает событие в несигнальное состояние.
Параметры
[out] event – указатель на событие. Тип события определен в заголовочном файле sysroot-*-kos/include/kos/sync_types.h из состава KasperskyOS SDK.
Возвращаемые значения
Нет.
KosEventWait()
Назначение
Ожидает перехода события из несигнального состояния в сигнальное сколь угодно долго.
Параметры
[in,out] event – указатель на событие. Тип события определен в заголовочном файле sysroot-*-kos/include/kos/sync_types.h из состава KasperskyOS SDK.
[in] reset – булевое значение, которое задает, нужно ли установить событие в несигнальное состояние после завершения ожидания (rtl_true – да, rtl_false – нет). Тип параметра определен в заголовочном файле sysroot-*-kos/include/rtl/stdbool.h из состава KasperskyOS SDK.
Возвращаемые значения
Нет.
KosEventWaitTimeout()
Назначение
Ожидает перехода события из несигнального состояния в сигнальное не дольше заданного времени.
Параметры
[in,out] event – указатель на событие. Тип события определен в заголовочном файле sysroot-*-kos/include/kos/sync_types.h из состава KasperskyOS SDK.
[in] reset – булевое значение, которое задает, нужно ли установить событие в несигнальное состояние, если ожидание было завершено из-за перехода в сигнальное состояние (rtl_true – да, rtl_false – нет). Тип параметра определен в заголовочном файле sysroot-*-kos/include/rtl/stdbool.h из состава KasperskyOS SDK.
[in] mdelay – время ожидания в миллисекундах или INFINITE_TIMEOUT, чтобы задать неограниченное время ожидания. Константа INFINITE_TIMEOUT определена в заголовочном файле sysroot-*-kos/include/rtl/rtc.h из состава KasperskyOS SDK.
Возвращаемые значения
В случае успеха возвращает rcOk, иначе возвращает код ошибки.
Если время ожидания истекло, возвращает rcTimeout.
Дополнительные сведения
Неблокирующий вызов, если в параметре mdelay указан 0.