Прерывание IPC (ipc_api.h)

21 мая 2024

ID libkos_ipc_api

API определен в заголовочном файле sysroot-*-kos/include/coresrv/ipc/ipc_api.h из состава KasperskyOS SDK.

API позволяет прерывать системные вызовы Call() и Recv(), в ожидании завершения которых заблокирован один или несколько потоков процесса. Прерывать системные вызовы требуется, например, чтобы корректно завершить процесс, поскольку потоки, ожидающие завершения этих системных вызовов, возобновляют исполнение.

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

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

API позволяет прерывать системные вызовы в потоках процесса, которые заблокированы после вызова функции CallEx() или RecvEx() из API syscalls.h, если эти функции вызваны с указанием дескриптора объекта синхронизации IPC в параметре syncHandle. Чтобы создать объекта синхронизации IPC, нужно вызвать функцию KnIpcCreateSyncObject(). (Дескриптор объекта синхронизации IPC не может быть передан другому процессу, так как в маске прав этого дескриптора не установлен необходимый для этого флаг.)

Функция KnIpcSetInterrupt() переводит объект синхронизации IPC в состояние, при котором прерываются системные вызовы в тех потоках процесса, которые заблокированы после вызова функции CallEx() или RecvEx() с указанием дескриптора этого объекта синхронизации IPC в параметре syncHandle. Прерывание системного вызова возможно только на некоторых стадиях его выполнения. Системный вызов, выполняемый функцией CallEx(), может быть прерван только тогда, когда на сервере еще не вызвана функция Recv() или RecvEx() для того IPC-канала, клиентский IPC-дескриптор которого указан при вызове функции CallEx(). Системный вызов, выполняемый функцией RecvEx(), может быть прерван только во время ожидания IPC-запроса от клиента.

Функция KnIpcClearInterrupt() отменяет действие функции KnIpcSetInterrupt().

Чтобы удалить объект синхронизации IPC, нужно закрыть его дескриптор вызовом функции KnHandleClose(), объявленной в заголовочном файле sysroot-*-kos/include/coresrv/handle/handle_api.h из состава KasperskyOS SDK.

Сведения о функциях API

Функции ipc_api.h

Функция

Сведения о функции

KnIpcCreateSyncObject()

Назначение

Создает объект синхронизации IPC.

Параметры

  • [out] syncHandle – указатель на дескриптор объекта синхронизации IPC.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KnIpcSetInterrupt()

Назначение

Переводит заданный объект синхронизации IPC в состояние, при котором системные вызовы Call() и Recv() прерываются.

Параметры

  • [in] syncHandle – дескриптор объекта синхронизации IPC.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

KnIpcClearInterrupt()

Назначение

Переводит заданный объект синхронизации IPC в состояние, при котором системные вызовы Call() и Recv() не прерываются.

Параметры

  • [in] syncHandle – дескриптор объекта синхронизации IPC.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

Вам помогла эта статья?
Что нам нужно улучшить?
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!
Спасибо за ваш отзыв, вы помогаете нам становиться лучше!