orocos-toolchain/rtt — pull request #78 by meyerj (2014-12-04 13:02:39+00:00)
Title: Fixed blocking trigger() calls on FileDescriptorActivities if the step() function takes too long

A pipe in Linux seems to have a limited buffer size of 65536 bytes. Every trigger() has written a command byte to
the pipe to wake up the thread and the loop() function empties the command before each step() invocation. For the
case the step takes too long, commands could queue up and after the pipe is full the write() system call has
blocked the thread that triggered the FileDescriptorActivity.

This patches makes the command pipe non-blocking and adds additional flags to the FileDescriptorActivity to make
sure that we never miss a command event even if the queue was full.

The patch does not support Windows as it requires the fcntl system call setting the `O_NONBLOCK` flag for the command pipe. In Windows the behavior is unchanged.