|1002||PostScript font encoding in unicode times|
|0502||evolution in the context of omnipotence|
|1209||Zur Frage des Rechtes auf Freigabe geheimgehaltener Informationen|
|0308||similar words search algorithm|
|0411||a thought on dictionary type implementation with PostScript|
|0405||hardware event handling using the XMOS example|
Communicating sequential processes,
when used in real time environment that provides
independant processing units per process,
need to handle three different types of events:
ports (usually known as GPIOs),
channels (for data exchange between processes).
A single process would be designed in much the same
way as poll loop driven processes are with Unix,
so a key feature to implement it is some means
to wait for a set of events and handle the first to occur.
XMOS processors provide the waiteu instruction for this purpose: It waits for arbitrary events, and will load the program counter with the event vector for the first event to occur. Timer events are used to implement timeout, port and channel events are used to wait for external and internal data.
However, for channels, event handling is only implemented to detect availability of data to be read by the process, to enable non-blocking input. For non-blocking output one would need to set up an event that indicates the channel transmission register is empty, i.e. the next out instruction to the channel would not block. Without this feature, extra protocol handling is needed to avoid blocking channels. For unidirectional channels this is not desirable.
Note: With a close look to Unix poll system call, one can see it distinguishes between input and output events using the two main flags pollin and pollout. These flags are equivalent to enabling events with the eeu instruction on XMOS, but in contrast to eeu they allow to enable events specifically for input or output. Consequently, a device to fully support non-blocking event handling should allow to enable events for one or both of incoming and outgoing data direction by distinct instructions or some parameter to it.
|0808||interrupts dispensable on million core system|