evl/monitor: extend ungated event interface
Applications were missing some features from ungated events
(i.e. count/sema4 and mask) in order to make it easier to use them as
building blocks of other synchronization mechanisms. This change set
adds the following support to fix this:
- the ability to broadcast a count, which is essentially a way to
unblock all waiters atomically, returning with a specific error code
denoting the condition. This is much simpler and more reliable
compared to unblocking all waiters manually.
- the ability to broadcast an event mask, so that all waiters receive
the same set of bits. This feature makes it simpler to implement
gang-based logic in applications, when multiple threads consume
particular states of a given event (which gated events do not allow
easily).
- support for conjunctive and disjunctive wait modes for event masks,
so that threads can wait for a particular set of bits to be set in
the mask, with AND/OR semantics. This departs from the former always
disjunctive, all-or-nothing logic to consume bits.
Signed-off-by: Philippe Gerum <rpm@xenomai.org>
parent
888ac6ec
Please register or sign in to comment