User manual
49
The loadable component shall create its own contexts (if any) in its initialization routine,
just before confirming the creation of a new device instance. The loadable component
shall fill all required fields of the provided descriptor of the chapi_out communication
context with their respective values.
The loadable component can store the data path to both the chapi_in and the chapi_out
descriptors provided to the component by the CHARON core. However, the loadable
component is not allowed to modify any fields in the descriptor of the chapi_in
communication context that is provided to the component by CHARON.
Upon receiving a confirmation, the CHARON core completes the establishment of its own
context by filling the remaining fields of the descriptor of the chapi_in communication
context. When receiving a rejection from the initialization routine of the loadable
component, CHARON can terminate the establishment of its contexts.
This contexts binding process shall be considered done if, and only if:
• The whole configuration has been loaded, and
• The loadable component has confirmed the creation of a device instance.
2.5 Run-time communication
The run-time communication over the CHAPI communication channel is defined in terms
of operations or transactions. Each operation is either initiated by the CHARON core or by
the instance of the device provided by a loadable component. The side originating the
operation is called the initiator of the operation. Each operation must be processed by the
other side of the communication channel, which is called the target of the operation.
Both CHARON and a loadable component are / must be designed to work in a multi-
threaded environment. Therefore no assumptions shall be made regarding the thread in
which any particular operation is initiated. Nevertheless, certain operations put some
restrictions on the way in which both sides of the CHAPI communication are allowed to
initiate those operations.
Before the operation is initiated, the initiator shall prepare the operation context. When
prepared, the initiator calls the corresponding routine provided by the counterpart to
process the operation. Entry points to these routines are supplied in the corresponding
fields of the chapi_in and the chapi_out descriptors by both sides of the CHAPI
communication.
The CHAPI introduces the following types of operations:
• Access to the device IO addres space and memory address space. Such an operation
is only initiated by the CPU emulation thread. Therefore the target shall finish










