# SPDX-License-Identifier: LSL-1.0 # Copyright (c) 2026 Markus Maiwald # Stewardship: Self Sovereign Society Foundation # # This file is part of the Nexus Sovereign Core. # See legal/LICENSE_SOVEREIGN.md for license terms. ## Nexus Membrane: Block I/O Client # Membrane Block API (The Block Valve - Userland Side) # Phase 37.2: Sovereign Storage Architecture # # This module provides raw sector access to userland filesystems. # The kernel is just a valve - NO filesystem logic in kernel. import libc const SECTOR_SIZE* = 512 # Block Valve Syscalls SYS_BLK_READ* = 0x220 SYS_BLK_WRITE* = 0x221 SYS_BLK_SYNC* = 0x222 proc blk_read*(sector: uint64, buf: pointer): int = ## Read a single 512-byte sector from disk ## Returns: bytes read (512) or negative error return syscall(SYS_BLK_READ, uint64(sector), cast[uint64](buf), 1'u64) proc blk_write*(sector: uint64, buf: pointer): int = ## Write a single 512-byte sector to disk ## Returns: bytes written (512) or negative error return syscall(SYS_BLK_WRITE, uint64(sector), cast[uint64](buf), 1'u64) proc blk_sync*(): int = ## Flush all pending writes to disk ## Returns: 0 on success, negative error return syscall(SYS_BLK_SYNC, 0'u64, 0'u64, 0'u64) # --- Multi-Sector Helpers --- proc blk_read_multi*(start_sector: uint64, buf: pointer, count: int): int = ## Read multiple contiguous sectors var total = 0 for i in 0..