Использование событий (event.h)

API определен в заголовочном файле sysroot-*-kos/include/kos/event.h из состава KasperskyOS SDK. Также в составе KasperskyOS SDK поставляется заголовочный файл sysroot-*-kos/include/kos/sync_api.h, который дает возможность транзитивно включить в исходный код программы заголовочный файл event.h и заголовочные файлы для использования других примитивов синхронизации.

API предназначен для синхронизации потоков исполнения на основе событий. Событие – примитив синхронизации, который используется для уведомления одного или нескольких потоков исполнения о выполнении требуемого этим потокам условия. Уведомляемый поток исполнения ожидает, когда событие перейдет из несигнального состояния в сигнальное, а уведомляющий поток исполнения изменяет состояние этого события.

Сведения о функциях API приведены в таблице ниже.

Использование API

Типовой сценарий использования API включает следующие шаги:

  1. Инициализация события вызовом функции KosEventInit().
  2. Использование события потоками исполнения:
    • Ожидание перехода события из несигнального состояния в сигнальное вызовом функции 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.

В начало