rt 0.19.1

A real-time operating system capable of full preemption
Documentation
#![no_main]
#![cfg_attr(target_os = "none", no_std)]

use core::sync::atomic::{AtomicU32, Ordering};

rt::sem!(H2READY);
rt::sem!(HDONE);
static H: AtomicU32 = AtomicU32::new(0);

fn hydrogen() {
    if (H.fetch_add(1, Ordering::Relaxed) & 1) == 1 {
        H2READY.post();
    }
    HDONE.wait();
}

fn oxygen() {
    H2READY.wait();
    make_water();
    HDONE.post_n(2);
}

include!("water.rs");