Oskar Schirmer

UP

 

2006

1002PostScript font encoding in unicode times

2009

0502evolution in the context of omnipotence

2010

1209Zur Frage des Rechtes auf Freigabe geheimgehaltener Informationen

2011

0308similar words search algorithm
0411a thought on dictionary type implementation with PostScript

2012

0405hardware 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), timers, and 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.