Real Time Linux Workshops
1999 - 2000 - 2001 - 2002 - 2003 - 2004 - 2005 - 2006 - 2007 - 2008 - 2009 - 2010
Ninth Real-Time Linux Workshop on November 2 to 4, 2007, in Linz, Austria
XM-FIFO: Interdomain Communication for XtratuM
Shuwei Bai, Yiqiao Pu, Kairui She, Qingguo Zhou, Nicholas MC Guire, Lian Li
FIFO is the First In First Out data queue for sharing data between multiple tasks. Fifos are one of the most basic communication mechanisms used in real-time operating systems. Especially for two real-time tasks or between a real-time task and non-real-time process, it is effective because it allows non-blocking as well as blocking semantics, which is mandatory to avert priority inversion between different domains. In the current XtratuM version, there is no method available for data transfer between domains which run under XtratuM's control. So we create XM-FIFO for the XtratuM which can be used to transfer data between real-time threads or between real-time threads and linux user-level processes. The XM-FIFO consists of a share FIFO module, Linux FIFO device and PaRTiKle FIFO device. By far, we have released XM-FIFO V1.0, XM-FIFO V2.0 and XM-FIFO V3.0. Three versions adopt different technologies and provide different functions. XM-FIFO V1.0 offers the special system calls to transfer data between domains and XtratuM kernel. And the FIFOs internal synchronization is achieved by disabling interrupts. XM-FIFO V2.0 adopts lock-free mechanism to access the FIFO synchronously. In the XM-FIFO V3.0, the FIFO data memory and control memory are mapped into the domain kernel space, which can increase data access speed. In the paper, besides XM-FIFOs design, the implementation of the memory mapping and lock-free mechanism in the XM-FIFO are interpreted.