c33f6ce762
Round 6 stub scan follow-up: resolves three FIXMEs in the SHM scheme daemon (ipcd/src/shm.rs). * O_RDONLY/O_WRONLY/O_RDWR handling (was line 51): the Handle enum now tracks readable/writable booleans derived from the open flags' O_ACCMODE bits. read() returns EACCES on write-only handles; write() returns EACCES on read-only handles. When no access mode is specified (acc == 0), both read and write are permitted (preserves prior behavior). * Zero-fill on truncate (was line 232): MmapGuard::grow_to now zeroes the byte range [old_len, new_len] on every growth, both in the in-capacity path and the new-allocation path. This ensures ftruncate- extended bytes read as zeros per POSIX SHM semantics, and prevents stale data leakage after a shrink-then-grow cycle. A zero_range helper method centralizes the write_bytes call. * Zero-fill on read (was line 293): the grow_to zero-fill guarantee ensures all bytes within [0, self.len] are properly initialized (zeros or written data), so reads within the logical size always return valid data. The FIXME is removed and a null-base guard was added to read() for defensive safety.
ipcd
A userspace daemon for interprocess communication.
Usage
See the examples folder.
Simply open chan:<name> with O_CREAT where <name> is any name you'd like to create a listener.
This listener can accept clients by calling dup("listen").
Open chan:<name> without O_CREAT to connect. Now you can read and write between both streams.