User manual
92
4.15 Delayed synchronized invocation
The operation of delayed invocation is part of the class of operations called
“Synchronization request acknowledge”. The CHARON core initiates such an operation.
The device instance is defined as the target of the operation.
In order to perform the operation, the initiator invokes a routine identified by the fun
argument - previously supplied in the corresponding request - delaying synchronized (with
the CPU instruction interpretation thread) execution. The initiator provides in the arg1 and
arg2 arguments additional parameters previously supplied together with the fun argument
requesting delaying synchronized (with the CPU instruction interpretation thread)
execution. The procedure is invoked as follows:
sst_handler fun = …;
if (fun) {
fun(arg1, arg2);
}
The example above shows that the device is not obliged to support the indicated
operation. This implies that it is allowed to supply 0 for the fun argument when requesting
delaying synchronized (to the CPU instruction interpretation thread) execution. Note that
the CHAPI defines additional parameters supplied through the arg1 and arg2 arguments to
help the target dispatching requests.
The device shall consider the delayed synchronized invocation request as a reaction of
the CPU instruction interpretation thread of the CHARON core to the previously issued
request for “Delaying synchronized execution”.
The CHAPI guarantees that the procedure identified by the fun argument is invoked in the
execution context synchronized to the CPU instruction interpretation thread.
4.16 Processing a bus power-up condition
Handling the bus power-up condition belongs to the class of operations called “Request
for processing bus power events”. The CHARON core initiates such an operation when
“powering” up the configured node.
In order to perform the operation, the initiator invokes a routine identified by the start field
of the chapi_out descriptor. The procedure is invoked as follows:
const chapi_out * co = …;
if (co->start) {
co->start(co);
}
The example above shows that the device is not obliged to support the indicated
operation.










