[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