KasperskyOS Community Edition 1.1
[Topic libkos_tasks]

EntityConnect()

Функция объявлена в заголовочном файле coresrv/entity/entity_api.h.

Retcode EntityConnect(Entity *cl, Entity *sr);

Функция соединяет процессы IPC-каналом. Для этого функция создает IPC-дескрипторы для процесса-клиента cl и процесса-сервера sr, а затем связывает дескрипторы друг с другом. Создаваемый канал будет включен в группу каналов по умолчанию (имя этой группы совпадает с именем процесса-сервера). Соединяемые процессы должны находиться в остановленном состоянии.

В случае успеха функция возвращает rcOk.

В начало
[Topic entity_connect]

EntityConnectToService()

Функция объявлена в заголовочном файле coresrv/entity/entity_api.h.

Retcode EntityConnectToService(Entity *cl, Entity *sr, const char *name);

Функция соединяет процессы IPC-каналом. Для этого функция создает IPC-дескрипторы для процесса-клиента cl и процесса-сервера sr, а затем связывает дескрипторы друг с другом. Создаваемый канал будет включен в группу каналов с именем name. Соединяемые процессы должны находиться в остановленном состоянии.

В случае успеха функция возвращает rcOk.

В начало
[Topic entity_connect_to_service]

EntityInfo

Структура EntityInfo, описывающая процесс, объявлена в файле if_connection.h.

typedef struct EntityInfo {

/* имя класса процесса */

const char *eiid;

/* максимальное число служб */

nk_iid_t max_endpoints;

/* информация о службах процесса */

const EndpointInfo *endpoints;

/* аргументы для передачи процессу при его запуске */

const char *args[ENTITY_ARGS_MAX + 1];

/* переменные окружения для передачи процессу при его запуске */

const char *envs[ENTITY_ENV_MAX + 1];

/* флаги процесса */

EntityFlags flags;

/* дерево компонентов процесса */

const struct nk_component_node *componentTree;

} EntityInfo;

typedef struct EndpointInfo {

char *name; /* полное квалифицированное имя службы */

nk_iid_t riid; /* идентификатор службы */

char *iface_name; /* имя интерфейса, который реализует служба */

} EndpointInfo;

typedef enum {

ENTITY_FLAGS_NONE = 0,

/* процесс сбрасывается при возникновении необработанного исключения */

ENTITY_FLAG_DUMPABLE = 1,

} EntityFlags;

В начало
[Topic entity_info]

EntityInit()

Функция объявлена в заголовочном файле coresrv/entity/entity_api.h.

Entity *EntityInit(const EntityInfo *info);

Функция создает процесс. Параметр info задает имя класса процесса и (опционально) его службы, аргументы и переменные окружения.

Создаваемый процесс будет иметь имя по умолчанию (совпадает с именем класса процесса), а также и имя исполняемого файлу по умолчанию (также совпадает с именем класса процесса).

В случае успеха функция возвращает структуру, описывающую новый процесс. Созданный процесс находится в остановленном состоянии.

В случае ошибки функция возвращает RTL_NULL.

В начало
[Topic entity_init]

EntityInitEx()

Функция объявлена в заголовочном файле coresrv/entity/entity_api.h.

Entity *EntityInitEx(const EntityInfo *info, const char *name,

const char *path);

Функция создает процесс.

Параметр info задает имя класса процесса и (опционально) его службы, аргументы и переменные окружения.

Параметр name задает имя процесса. Если он имеет значение RTL_NULL, то в качестве имени процесса будет использоваться имя класса процесса из параметра info.

Параметр path задает имя исполняемого файла в ROMFS-образе решения. Если он имеет значение RTL_NULL, то в качестве имени файла будет использоваться имя класса процесса из параметра info.

В случае успеха функция возвращает структуру, описывающую новый процесс. Созданный процесс находится в остановленном состоянии.

В случае ошибки функция возвращает RTL_NULL.

В начало
[Topic entity_init_ex]

EntityRun()

Функция объявлена в заголовочном файле coresrv/entity/entity_api.h.

Retcode EntityRun(Entity *entity);

Функция запускает процесс, находящийся в остановленном состоянии. Процесс описывается структурой entity.

В случае успеха функция возвращает rcOk.

В начало
[Topic entity_run]