Programming Language

Nocter

A self-contained systems language built around simplicity, encapsulation, and foolproof design.

/development/std/internal/hash/darwin.nct

darwin.nct

//! Darwin entropy adapter.

see ./index.nct

use /internal/os/darwin.{sys_getentropy, syscall2, trap}
use /ptr.{addr, from_ref_mut}

#target: "arm64-darwin"
/// Returns a fresh process-local seed or terminates when target entropy is unavailable.
func acquire_seed(): u64 {
    var value: u64 = 0
    let pointer = from_ref_mut(&+value)
    let result = syscall2(sys_getentropy, addr(pointer), 8)
    if result.errno != 0 {
        return trap()
    }
    return value
}