Expand description
Userspace pointer validation for Strat9-OS.
The UserSlice pattern (inspired by RedoxOS usercopy.rs) ensures the
kernel never dereferences a raw userspace pointer without first checking:
- Range: The entire region lies in the user half (<
USER_SPACE_END) - Overflow:
base + lendoesn’t wrap around - Mapping: Every page in the region is present in the active page tables with the requested permissions (read or write)
After validation, UserSlice provides safe copy operations that transfer
data between userspace and kernel buffers.
§Example
ⓘ
// In a syscall handler:
let user_buf = UserSliceRead::new(buf_ptr, buf_len)?;
let mut kernel_buf = [0u8; 256];
let n = user_buf.copy_to(&mut kernel_buf)?;Structs§
- User
Slice Read - A validated read-only reference to a user-space memory region.
- User
Slice Read Write - A validated read-write reference to a user-space memory region.
- User
Slice Write - A validated writable reference to a user-space memory region.
Enums§
- User
Slice Error - Errors that can occur when constructing or using a
UserSlice.