This section provides examples of init descriptions that demonstrate various aspects of starting processes.
The build system can automatically create an init description based on the init.yaml.in
template.
Starting a client and server and creating an IPC channel between them
In this example, a process of the Client
class and a process of the Server
class are started. The names of the processes are not specified, so they will match the names of their respective process classes. The names of the executable files are not specified, so they will also match the names of their respective process classes. The processes will be connected by an IPC channel named server_connection
.
init.yaml
entities:
- name: Client
connections:
- target: Server
id: server_connection
- name: Server
Starting processes from defined executable files
This example will start a Client
-class process from the executable file named cl
, a ClientServer
-class process from the executable file named csr
, and a MainServer
-class process from the executable file named msr
. The names of the processes are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: Client
path: cl
- name: ClientServer
path: csr
- name: MainServer
path: msr
Starting two processes from the same executable file
This example will start a Client
-class process from the executable file named Client
, and two processes of the MainServer
and BkServer
classes from the executable file named srv
. The names of the processes are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: Client
- name: MainServer
path: srv
- name: BkServer
path: srv
Starting two servers of the same class and a client, and creating IPC channels between the client and servers
This example will start a Client
-class process (named Client
) and two Server
-class processes named UserServer
and PrivilegedServer
. The client will be connected to the servers via IPC channels named server_connection_us
and server_connection_ps
. The names of the executable files are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: Client
connections:
- id: server_connection_us
target: UserServer
- id: server_connection_ps
target: PrivilegedServer
- task: UserServer
name: Server
- task: PrivilegedServer
name: Server
Setting the startup parameters and environment variables of programs
This example will start a VfsFirst
-class process (named VfsFirst
) and a VfsSecond
-class process (named VfsSecond
). The program that will run in the context of the VfsFirst
process will be started with the parameter -f /etc/fstab
, and will receive the ROOTFS
environment variable with the value ramdisk0,0 / ext2 0
and the UNMAP_ROMFS
environment variable with the value 1
. The program that will run in the context of the VfsSecond
process will be started with the -l devfs /dev devfs 0
parameter. The names of the executable files are not specified, so they will match the names of their respective process classes.
init.yaml
entities:
- name: VfsFirst
args:
- -f
- /etc/fstab
env:
ROOTFS: ramdisk0,0 / ext2 0
UNMAP_ROMFS: 1
- name: VfsSecond
args:
- -l
- devfs /dev devfs 0
Page top