38 lines
816 B
C
38 lines
816 B
C
#ifndef INCLUDED_OS_FAIRLOCK_H
|
|
#define INCLUDED_OS_FAIRLOCK_H
|
|
|
|
#ifndef INCLUDED_OS_MUTEX_H
|
|
#include <os_mutex.h>
|
|
#endif /*INCLUDED_OS_MUTEX_H*/
|
|
|
|
typedef struct {
|
|
os_mutex_t lock;
|
|
}os_fairlock_t;
|
|
|
|
OS_STATIC_FORCE_INLINE
|
|
void os_fairlock_init(os_fairlock_t* self){
|
|
os_mutex_init(&self->lock);
|
|
}
|
|
|
|
OS_STATIC_FORCE_INLINE
|
|
os_err_t os_fairlock_trylock(os_fairlock_t* self){
|
|
return os_mutex_trylock(&self->lock);
|
|
}
|
|
|
|
OS_STATIC_FORCE_INLINE
|
|
void os_fairlock_lock(os_fairlock_t* self){
|
|
os_mutex_lock(&self->lock);
|
|
}
|
|
|
|
OS_STATIC_FORCE_INLINE
|
|
os_err_t os_fairlock_timed_lock(os_fairlock_t* self, os_tick_t ticks){
|
|
return os_mutex_timed_lock(&self->lock, ticks);
|
|
}
|
|
|
|
OS_STATIC_FORCE_INLINE
|
|
void os_fairlock_unlock(os_fairlock_t* self){
|
|
os_mutex_unlock_one(&self->lock);
|
|
}
|
|
|
|
#endif /*INCLUDED_OS_FAIRLOCK_H*/
|