Einit initializing program
At startup, the KasperskyOS kernel finds the executable file named Einit
(initializing program) in the solution image and runs this executable file. The running process has the Einit
class and is normally used to start all other processes that are required when the solution is started.
Generating the C-code of the initializing program
The KasperskyOS Community Edition toolkit includes the einit
tool, which lets you generate the C-code of the initializing program based on the init description (the description file is normally named init.yaml
). The obtained program uses the KasperskyOS API to do the following:
The standard way of using the einit
tool is to integrate an einit call into one of the steps of the build script. As a result, the einit
tool uses the init.yaml
file to generate the einit.c
file containing the code of the initializing program. In one of the following steps of the build script, you must compile the einit.c
file into the executable file of Einit
and include it into the solution image.
You are not required to create static description files for the initializing program. These files are included in the KasperskyOS Community Edition toolkit and are automatically connected during a solution build. However, the Einit
process class must be described in the security.psl
file.
Syntax of init.yaml
An init description contains data in YAML format. This data identifies the following:
This data consists of a dictionary with the entities
key containing a list of dictionaries of processes. Process dictionary keys are presented in the table below.
Process dictionary keys in an init description
Key |
Required |
Value |
---|---|---|
|
Yes |
Process security class |
|
No |
Process name. If this name is not specified, the security class name will be used. Each process must have a unique name. You can start multiple processes of the same security class if they have different names. |
|
No |
Name of the executable file in ROMFS (in the solution image) from which the process will be started. If this name is not specified, the security class name (without prefixes and dots) will be used. For example, processes of the You can start multiple processes from the same executable file. |
|
No |
Process IPC channel dictionaries list. This list defines the statically created IPC channels whose client handles will be owned by the process. The list is empty by default. (In addition to statically created IPC channels, processes can also use dynamically created IPC channels.) |
|
No |
List of arguments passed to the process (the |
|
No |
Dictionary of environment variables passed to the process. The keys in this dictionary are the names of variables mapped to the passed values. The maximum size of a value is 1024 bytes. |
Process IPC channel dictionary keys are presented in the table below.
IPC channel dictionary keys in an init description
Key |
Required |
Value |
---|---|---|
|
Yes |
IPC channel name, which can be defined as a specific value or as a link such as
|
|
Yes |
Name of the process that will own the server handle of the IPC channel. |