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 <sean@xobs.io>
The purpose of the planning directory is a place where we can stash
code for reference in various github issues and project plans without
having to integrate it into the code base. This is for large changes
to the code base that require extensive planning and discussion prior
to integration.
Newer versions of Renode rename PrivilegeArchitecture to
PrivilegedArchitecture. They appear to have tried to work around this by
annotating it with `[NameAlias("privilegeArchitecture")]`, however that
doesn't change the fact that the actual type itself changed as well.
This incompatible change will cause breakage on older versions of
Renode.
Signed-off-by: Sean Cross <sean@xobs.io>
Zip depends on time, which had some issues compiling on Rust v1.80: https://github.com/time-rs/time/issues/681
Update it to 2.1.6 in order to fix the issue.
Did not notice any apparent regression due to this update as of now.
the filter is on by default (which blocks all DMA access with
the null settings) and can be configured to restrict access to
regions of memory that contain secret materials.
rust format inserts a trailing space in some autoformatted
doc code.
we have a rule that doesn't allow trailing spaces
we also have a rule that requires rustfmt to run clean
unresolvable paradox.
Solution: just make the docs worse. I don't have time for this, really.