User manual
122
This member is used in order to set bus request affinity mask which defines the set of bus
servers which can process this particular bus request. It is mapped to the routine specified
by the set_affinity_mask entry in the chapi_in communication context.
void set_affinity_callback(__chapi_sa_handler_p sa_callback,
void *arg1, int arg2);
where
sa_callback - affinity change callback routine;
arg1 - first argument to the callback;
arg2 - second argument to the callback.
This member is used in order to setup bus request affinity callback which is called when
bus request affinity is changed by CHARON core. The call is mapped to the routine
identified by the set_affinity_callback entry of chapi_in communication context.
unsigned int get_bus_server_mask();
This method retreives bus server mask which specifies if particular CPU number is
working as bus server. It is mapped to the routine identified by the get_bus_server_mask
entry in the chapi_in communication context.
bool get_attention_objects(unsigned int cpu_no,
volatile unsigned long *& attention_object,
unsigned long & attention_value);
where
cpu_no - CPU number to get attention objects for;
attention_object - pointer to the location which should be written with specific value to
force BRQ checking;
attention_value - value which should be written to specified above location in order
to force BRQ checking by the CPU.
This method gets CPU attention objects for particular CPU in order to have possibility to
interrupt CPU loop and force CPU to check for BRQs. Attention objects are represented
by the pair {address, value to write}. This technique is designed for the case of hardware
used in device emulation, pure emulation does not require this stuff. This method is
mapped to the routine identified by the get_attention_objects entry of the chapi_in
communication context descriptor










