Skip to main content

forge_sys/os/
condvar.rs

1use crate::os::{mutex::MutexType, time::TimeSpanType};
2
3#[repr(C)]
4#[derive(Default)]
5pub struct ConditionVariableType {
6    _reserved: [u8; 20], // TODO: Figure out actual size
7}
8
9#[repr(C)]
10#[derive(Debug, Clone, Copy)]
11pub enum ConditionVariableStatus {
12    NoTimeout = 0,
13    Timeout = 1,
14}
15
16unsafe extern "C" {
17    pub fn nnosInitializeConditionVariable(var: *mut ConditionVariableType);
18    pub fn nnosFinalizeConditionVariable(var: *mut ConditionVariableType);
19    pub fn nnosSignalConditionVariable(var: *mut ConditionVariableType);
20    pub fn nnosBroadcastConditionVariable(var: *mut ConditionVariableType);
21    pub fn nnosWaitConditionVariable(var: *mut ConditionVariableType, mutex: *mut MutexType);
22    pub fn nnosTimedWaitConditionVariable(
23        var: *mut ConditionVariableType,
24        mutex: *mut MutexType,
25        timout: TimeSpanType,
26    ) -> ConditionVariableStatus;
27}