[LITMUS^RT] Announcing PGM^RT!
Glenn Elliott
gelliott at cs.unc.edu
Wed Feb 19 23:15:20 CET 2014
Hi Everyone,
I want to share with you a project that we’ve been working on here at UNC: PGM^RT. PGM^RT is a middleware framework for supporting real-time dataflow graph applications (PGM stands for processing graph method---a formalism for describing dataflow graphs). PGM^RT simplifies/unifies the signaling and message passing that occurs between threads, and it has real-time-friendly design. Graphs can be contained within a single process, or be broken up into separate processes. PGM^RT also supports graphs that span a network. Currently supported signaling/message-passing IPCs are: custom spinlock-based condition variables built directly on top of Linux futexes (low overheads! (x86/Linux only)), pthread condition variables, named pipes (aka FIFOs), POSIX message queues, and stream sockets (e.g., TCP).
The source code is absolutely free to use. Here’s a link to the project page (and source code): http://github.com/GElliott/pgm
Although PGM^RT should work on any POSIX-compatible system, lower overheads can be achieved by using LITMUS^RT. However, a minor patch to LITMUS^RT is required to properly assign scheduling priorities for deadline schedulers (no patch is needed for fixed-priority scheduling). Patches have been posted to the LITMUS^RT Publications page: http://wiki.litmus-rt.org/litmus/Publications
You can find a more complete description of PGM^RT and its API in Section 6 and Appendix B in our PGM paper that was submitted to ECRTS: http://www.cs.unc.edu/~anderson/papers/ecrts14b_long.pdf
Thanks!
-Glenn
More information about the litmus-dev
mailing list