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); }