Skip to main content

Crate os_abi_sentinel

Crate os_abi_sentinel 

Source
Expand description

os_abi_sentinel is a small, dependency-free crate for OS development focused on ABI contracts.

In operating systems you often share #[repr(C)] structures across boundaries:

  • bootloader ↔ kernel
  • kernel ↔ drivers
  • kernel ↔ user-space runtimes / services
  • firmware tables ↔ parsers

A single layout mismatch (size, alignment, or field offset) can silently corrupt memory. This crate provides tiny compile-time assertions and a minimal ABI version type so those mismatches become build failures.

§Design goals

  • No external dependencies
  • no_std-first (enable the std feature only for host-side tests/examples)
  • Compile-time verification where possible
  • Clear docs suitable for docs.rs

§Quick example

use os_abi_sentinel::{const_assert_align, const_assert_offset, const_assert_size};

#[repr(C)]
pub struct BootInfo {
    pub magic: u32,
    pub version: u32,
    pub mem_map_ptr: u64,
    pub mem_map_len: u32,
    pub _reserved: u32,
}

const_assert_size!(BootInfo, 24);
const_assert_align!(BootInfo, 8);
const_assert_offset!(BootInfo, mem_map_ptr, 8);
const_assert_offset!(BootInfo, mem_map_len, 16);

Modules§

version
ABI version helpers.

Macros§

const_assert
Compile-time assertion.
const_assert_align
Compile-time type alignment assertion (in bytes).
const_assert_eq
Compile-time equality assertion.
const_assert_ne
Compile-time non-equality assertion.
const_assert_offset
Compile-time field offset assertion (in bytes).
const_assert_size
Compile-time type size assertion (in bytes).