cu29-clock 0.15.0

Copper Robot Clock implementation. It is a monotonic high precision clock for real time applications. It has a mock feature for testing time dependent behaviors. It is part of the Copper project but can be used independently.
Documentation
1
2
3
4
5
6
7
8
9
10
11
pub fn initialize() {}

#[inline(always)]
pub fn read_raw_counter() -> u64 {
    let counter: u64;
    // SAFETY: Reading the cycle counter register is a side-effect-free CPU instruction.
    unsafe {
        core::arch::asm!("rdcycle {}", out(reg) counter);
    }
    counter
}