Inter Process Communication (IPC)
IPC provides flexible, efficient message passing between processes. It can transparently send and receive complex data structures, including lists and variable length arrays, using both anonymous "publish/subscribe" and "client/server" message-passing paradigms. A wide variety of languages and operating systems are supported.
IPC was developed in 1994 to support NASA's Deep Space One flight project. It is based on earlier work called the Task Control Architecture (TCA). Although IPC never actually made it to flight, it has been used in many autonomous systems, including DIRA, Skyworker, and NASA's 3T architecture.
IPC provides high-level support for connecting processes using TCP/IP sockets and sending data between processes. It takes care of opening sockets, registering messages, and sending and receiving messages, including both anonymous publish/subscribe and client/server type messages. The IPC library contains functions to marshall (serialize) and unmarshall (de-serialize) data, handles data transfer between machines with different Endian conventions, invoke user-defined handlers when a message is received, and invoke user-defined callbacks at set intervals. IPC uses the more efficient Unix sockets when processes are on the same processor, and does byte-swapping only when necessary. IPC now supports multi-threaded applications (although currently it has been tested only under Linux).
IPC libraries exist for C, C++, and Allegro Common Lisp. IPC for Java is now available (although currently it has been tested only under Linux). IPC currently runs on the following architectures and operating systems: Sparc (running SunOS and Solaris), Intel processors (running Linux, Windows NT, Windows 98), 680xx processors (running VxWorks), SGI (running IRIX), and MacIntosh (running Mac OS and OSX). It is easily ported to any machine that supports Unix-style sockets (for assistance on porting IPC to a new architecture, contact Reid Simmons ).
As part of the Deep Space One project, we also developed comview, a tool for graphically displaying the message traffic between IPC modules. The comview tool is available as part of the IPC distribution. It is described in more detail in this paper.
Click here for a brief history of our research in architectures for task-level control.
Send mail to reids@cs.cmu.edu to be added to the IPC mailing list, ipc-users@cs.cmu.edu.
As of version 3.8.0, IPC is released under the simplified BSD open source license.
Download |
Description |
Date |
Latest Release |
November 3, 2014 |
|
Current Documentation |
April 21, 2011 |
|
Previous Minor (Beta) Release |
December 17, 2010 |
|
Older (Omega) Release |
December 30, 2005 |
|
Older Documentation (for version 3.6) |
August 2001 |
|
Visualization Tool |
July 19, 2000 |
|
Comview Documentation |
July 19, 2000 |
|
xdrgen Documentation |
March 16, 2001 |
Changes for IPC Version 3.9.1:
Changes for IPC Version 3.9.0:
Changes for IPC Version 3.8.6:
Change for IPC Version 3.8.5:
Main changes for IPC Version 3.8.4:
Main changes for IPC Version 3.8.3:
Main changes for IPC Version 3.8.0:
Main changes for IPC Version 3.7.10:
Main changes for IPC Version 3.7.4:
Main changes for IPC Version 3.7.3:
Main changes for IPC Version 3.7.0:
Note: Currently, these new features have been tested only under Linux
(RedHat 6.1 & 7.2). We expect to continue porting to additional platforms.
If you have a particular need, please let us know. Also, the manual
has not yet been updated to explain these new features -- that is also coming.
Last modified: Tue Nov 4 10:24:53 EST 2014 -- reids+@cs.cmu.edu