next up previous
Next: Concurrency primitives using events Up: Intra-domain scheduling Previous: Intra-domain scheduling

Event counts and sequencers

 

There are three operations available on an event count e and two on a sequencer s. These are:

In fact there is little difference between the underlying semantics of sequencers and event counts; the difference is that the ticket operation does not need to consider awaking threads, whereas the advance operation does (therefore it is wrong for a thread to await on a sequencer). The initial value for sequencers and event counts is zero; this may be altered immediately after creation using the above primitives. An additional operation await_until(e,v,t) is supported, which waits until event e has value v or until time has value t.

By convention an advance on an outbound event will cause the new value to be propagated by issuing the send() system call. Only read and await should be used on incoming events as their value may be overwritten at any time.

In this way, both local and interdomain synchronization can be achieved using the same interface and, unless required, a user level thread need not concern itself with the difference.


next up previous
Next: Concurrency primitives using events Up: Intra-domain scheduling Previous: Intra-domain scheduling

I. Leslie, D. McAuley, R. Black, T. Roscoe, P. Barham, D. Evers, R. Fairbairns & E. Hyden