Skip to main content

xous/
process.rs

1use core::sync::atomic::{AtomicU32, Ordering};
2
3static CACHED_PID: AtomicU32 = AtomicU32::new(0);
4
5pub fn id() -> u32 {
6    let pid = CACHED_PID.load(Ordering::Relaxed);
7    if pid != 0 {
8        return pid;
9    }
10
11    if let Ok(pid) = crate::syscall::current_pid() {
12        CACHED_PID.store(pid.get() as u32, Ordering::Relaxed);
13        pid.get() as u32
14    } else {
15        0
16    }
17}
18
19pub fn set_id(id: u32) { CACHED_PID.store(id, Ordering::Relaxed); }