1use crate::os::{mutex::MutexType, time::TimeSpanType};
2
3#[repr(C)]
4#[derive(Default)]
5pub struct ConditionVariableType {
6 _reserved: [u8; 20], }
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}