Files
@ 0781cf1b7abf
Branch filter:
Location: CSY/reowolf/src/runtime2/component/mod.rs - annotation
0781cf1b7abf
784 B
application/rls-services+xml
WIP: Adding debug logs, add sync test
9e771c9cf8d3 9e771c9cf8d3 968e958c3286 9e771c9cf8d3 968e958c3286 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f 0de39654770f | mod component_pdl;
mod control_layer;
mod consensus;
pub(crate) use component_pdl::{CompPDL, CompCtx, CompScheduling};
pub(crate) use control_layer::{ControlId};
use super::scheduler::*;
use super::runtime::*;
/// If the component is sleeping, then that flag will be atomically set to
/// false. If we're the ones that made that happen then we add it to the work
/// queue.
pub(crate) fn wake_up_if_sleeping(sched_ctx: &SchedulerCtx, comp_id: CompId, handle: &CompHandle) {
use std::sync::atomic::Ordering;
let should_wake_up = handle.sleeping
.compare_exchange(true, false, Ordering::AcqRel, Ordering::Acquire)
.is_ok();
if should_wake_up {
let comp_key = unsafe{ comp_id.upgrade() };
sched_ctx.runtime.enqueue_work(comp_key);
}
}
|