Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
flatipc is a new method for doing IPC. This is a zero-copy approach where structs are given `repr(C)` implementations that are well-defined and work across process boundaries. If the same struct or enum is used in two processes that has the same layout, then data can be freely passed between the two processes without incurring a serialization or deserialization penalty, provided the following hold: 1. The buffer must be page-aligned and be a multiple of the page size 2. The item must be `#[repr(C)]` 3. There must be no pointers or references of any kind If these three things hold, then the object is safe to sling across the process boundary. This crate adds the ability to annotate structs with `#[derive(flatipc::Ipc)]` to provide them with this functionality. When doing so, objects gain the `.into_ipc()` call that turns them into something that can be sent across process boundaries. The resulting object has `.lend()`, `.lend_mut()`, `.try_lend()`, and `.try_lend_mut()` as functions. Signed-off-by: Sean Cross <[email protected]>
- Loading branch information