31#include "ove_config.h"
32#include "ove/storage.h"
90 unsigned int initial,
unsigned int max);
156 ove_mutex_storage_t *storage);
176 ove_condvar_storage_t *storage);
232int ove_sem_create(
ove_sem_t *sem,
unsigned int initial,
317#elif !defined(__ZIG_CIMPORT__)
322#define ove_mutex_create(phandle) \
323 ({ static ove_mutex_storage_t _ove_stor_; \
324 ove_mutex_init((phandle), &_ove_stor_); })
325#define ove_mutex_destroy(mtx) ove_mutex_deinit(mtx)
327#define ove_sem_create(psem, initial, max) \
328 ({ static ove_sem_storage_t _ove_stor_; \
329 ove_sem_init((psem), &_ove_stor_, (initial), (max)); })
330#define ove_sem_destroy(sem) ove_sem_deinit(sem)
332#define ove_event_create(pevt) \
333 ({ static ove_event_storage_t _ove_stor_; \
334 ove_event_init((pevt), &_ove_stor_); })
335#define ove_event_destroy(evt) ove_event_deinit(evt)
337#define ove_recursive_mutex_create(phandle) \
338 ({ static ove_mutex_storage_t _ove_stor_; \
339 ove_recursive_mutex_init((phandle), &_ove_stor_); })
340#define ove_recursive_mutex_destroy(mtx) ove_mutex_deinit(mtx)
342#define ove_condvar_create(pcv) \
343 ({ static ove_condvar_storage_t _ove_stor_; \
344 ove_condvar_init((pcv), &_ove_stor_); })
345#define ove_condvar_destroy(cv) ove_condvar_deinit(cv)
516 uint32_t timeout_ms);
545static inline void ove_mutex_destroy(
ove_mutex_t m) { (void)m; }
549static inline void ove_sem_destroy(
ove_sem_t s) { (void)s; }
553static inline void ove_event_destroy(
ove_event_t e) { (void)e; }
560static inline void ove_recursive_mutex_destroy(
ove_mutex_t m) { (void)m; }
562static inline void ove_condvar_destroy(
ove_condvar_t c) { (void)c; }
int ove_condvar_init(ove_condvar_t *cv, ove_condvar_storage_t *storage)
Initialise a condition variable using caller-supplied static storage.
int ove_condvar_wait(ove_condvar_t cv, ove_mutex_t mtx, uint32_t timeout_ms)
Atomically release a mutex and wait on a condition variable.
void ove_condvar_signal(ove_condvar_t cv)
Wake one thread waiting on a condition variable.
void ove_event_deinit(ove_event_t evt)
Release resources held by an event initialised with ove_event_init().
void ove_condvar_deinit(ove_condvar_t cv)
Release resources held by a condition variable initialised with ove_condvar_init().
void ove_sem_deinit(ove_sem_t sem)
Release resources held by a semaphore initialised with ove_sem_init().
int ove_recursive_mutex_init(ove_mutex_t *mtx, ove_mutex_storage_t *storage)
Initialise a recursive mutex using caller-supplied static storage.
void ove_mutex_deinit(ove_mutex_t mtx)
Release resources held by a mutex initialised with ove_mutex_init().
int ove_event_wait(ove_event_t evt, uint32_t timeout_ms)
Wait for a binary event to be signalled.
void ove_recursive_mutex_unlock(ove_mutex_t mtx)
Release one level of a recursive mutex lock.
int ove_recursive_mutex_lock(ove_mutex_t mtx, uint32_t timeout_ms)
Acquire a recursive mutex, blocking until it is available or the timeout expires.
int ove_event_init(ove_event_t *evt, ove_event_storage_t *storage)
Initialise a binary event object using caller-supplied static storage.
void ove_condvar_broadcast(ove_condvar_t cv)
Wake all threads waiting on a condition variable.
int ove_sem_init(ove_sem_t *sem, ove_sem_storage_t *storage, unsigned int initial, unsigned int max)
Initialise a counting semaphore using caller-supplied static storage.
int ove_mutex_lock(ove_mutex_t mtx, uint32_t timeout_ms)
Acquire a non-recursive mutex, blocking until it is available or the timeout expires.
int ove_mutex_init(ove_mutex_t *mtx, ove_mutex_storage_t *storage)
Initialise a non-recursive mutex using caller-supplied static storage.
void ove_mutex_unlock(ove_mutex_t mtx)
Release a non-recursive mutex previously acquired by ove_mutex_lock().
int ove_sem_take(ove_sem_t sem, uint32_t timeout_ms)
Decrement (take) a semaphore, blocking until a count is available or the timeout expires.
void ove_event_signal_from_isr(ove_event_t evt)
Signal a binary event from an interrupt service routine.
void ove_sem_give(ove_sem_t sem)
Increment (give) a semaphore, potentially unblocking a waiting thread.
void ove_event_signal(ove_event_t evt)
Signal a binary event, unblocking one waiting thread.
#define OVE_ERR_NOT_SUPPORTED
The requested feature is not supported by the active backend.
Definition types.h:38
struct ove_event * ove_event_t
Opaque handle for a binary event (signal/wait) object.
Definition types.h:91
struct ove_sem * ove_sem_t
Opaque handle for a counting semaphore object.
Definition types.h:88
struct ove_condvar * ove_condvar_t
Opaque handle for a condition variable object.
Definition types.h:94
struct ove_mutex * ove_mutex_t
Opaque handle for a mutex object.
Definition types.h:85