No description
- Rust 94.7%
- C 5.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The NV files are implicitly open in downstream rfsd and the CP never closes them, so committing on RFS_CLOSE meant committing never. Hardware showed the result: nv_normal.bin.part and nv_user.bin.part accumulating in the state directory while every write was still effectively discarded. A transfer ending is the only signal that the image is whole, so rename there. The GDDS path already did the equivalent -- it commits when the last chunk reaches the declared size -- and that one worked on the same boot. Tested by driving the frame handler directly: an IO_REQUEST write plus its data frame, no CLOSE, must leave a committed file and no .part. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01CNuQ3gAkiwVoscqZHr3SEi |
||
| .cargo | ||
| crates | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
exynos-modem workspace
Userspace pieces for the Exynos s5300 ("Shannon") modem on the mainline-Linux bring-up of the Google Tensor G4 (Pixel 9a). A Cargo workspace of peer crates:
crates/exynos-modem— the daemon that answers the CP's vendor channels (GEMS/OEM onoem_ipc1, RFS, boot supervision + crash recovery). The analog of Qualcomm'srmtfs. See its own README for details.crates/samsung-sit— a pure, I/O-free codec for the SIT (Exynos RIL) wire protocol: bytes ⟷ typed structs, no transport, no GLib. Consumed today via a C FFI shim from ModemManager'ssamsung-sitplugin (so the plugin keeps owning thewwan0sit*ports and the async/mainloop) and natively by any future Rust modem daemon. Written withbinrwfor declarative binary layouts.crates/samsung-sit-ffi— a#[repr(C)]static library (libsamsung_sit_ffi.a) exposingsamsung-sitto the ModemManager C plugin. The ABI is GLib-free (byte-buffer out-params, status codes); a thin C adapter re-wraps it into theGByteArray/GErrorshapes of the plugin's existingmm-sit-protocol.h, so the transport/orchestration C is left untouched.
Build
rustup target add aarch64-unknown-linux-musl # once
cargo build --release # all crates -> static musl
cargo test # wire-format tests