iceoryx is an inter-process communication (IPC) middleware for POSIX based operating systems. It features shared memory capabilities which allow a true zero-copy data transfer.
Originating from the automotive domain, it is crucial to transfer a huge amount of data between multiple processes to realize driver assistance systems or automated driving applications. Moreover, the same efficient communication mechanism can be applied to a broader range of use cases, e.g. in the field of robotics or game development.
Eclipse iceoryx provides algorithms and libraries for shared memory communication on POSIX operating systems.
In domains like automotive, robotics or gaming, a huge amount of data must be transferred between different parts of the system. If these parts are actually different processes on a POSIX based operating system like Linux, this huge amount of data has to be transferred via an inter-process-communication (IPC) mechanism.
The mechanisms provided by the operating system, like message queues, normally require to copy the data and are subject to context switches between user and kernel space. In fact, it is often not only one but many copies of the transferred data between the sender and the receiver. If it comes to GBytes/s data exchange rates, avoiding these copies becomes a crucial factor.
iceoryx is a middleware with a zero-copy shared memory approach which is optimized for the huge data inter-process-communication.
The OpenADx working group is currently under preparation for becoming an official Eclipse WG. OpenADx information are currently hosted at the Eclipse Wiki.
There are no known legal issues.
Initial contribution is planned for end of October 2019
This project is work in progress. New features will be added, also in exchange with feedback coming from the community. The goal is to have a code base that is production ready.
This work will be presented in the automotive and robotics community. Especially, there will be a binding to the ROS2 software stack. Yet, the iceoryx middleware is a piece of functionality that can be integrated in other communication frameworks.