Содержание
EntityConnect()
Функция объявлена в заголовочном файле coresrv/entity/entity_api.h
.
Retcode EntityConnect(Entity *cl, Entity *sr);
Функция соединяет процессы IPC-каналом. Для этого функция создает IPC-дескрипторы для процесса-клиента cl
и процесса-сервера sr
, а затем связывает дескрипторы друг с другом. Создаваемый канал будет включен в группу каналов по умолчанию (имя этой группы совпадает с именем процесса-сервера). Соединяемые процессы должны находиться в остановленном состоянии.
В случае успеха функция возвращает rcOk.
В началоEntityConnectToService()
Функция объявлена в заголовочном файле coresrv/entity/entity_api.h
.
Retcode EntityConnectToService(Entity *cl, Entity *sr, const char *name);
Функция соединяет процессы IPC-каналом. Для этого функция создает IPC-дескрипторы для процесса-клиента cl
и процесса-сервера sr
, а затем связывает дескрипторы друг с другом. Создаваемый канал будет включен в группу каналов с именем name
. Соединяемые процессы должны находиться в остановленном состоянии.
В случае успеха функция возвращает rcOk.
В начало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;
EntityInit()
Функция объявлена в заголовочном файле coresrv/entity/entity_api.h
.
Entity *EntityInit(const EntityInfo *info);
Функция создает процесс. Параметр info
задает имя класса процесса и (опционально) его службы, аргументы и переменные окружения.
Создаваемый процесс будет иметь имя по умолчанию (совпадает с именем класса процесса), а также и имя исполняемого файлу по умолчанию (также совпадает с именем класса процесса).
В случае успеха функция возвращает структуру, описывающую новый процесс. Созданный процесс находится в остановленном состоянии.
В случае ошибки функция возвращает RTL_NULL.
В начало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.
В началоEntityRun()
Функция объявлена в заголовочном файле coresrv/entity/entity_api.h
.
Retcode EntityRun(Entity *entity);
Функция запускает процесс, находящийся в остановленном состоянии. Процесс описывается структурой entity
.
В случае успеха функция возвращает rcOk.
В начало