bond/include/kernel/ke/rwwlock.h

37 lines
877 B
C
Raw Normal View History

2018-03-24 00:58:24 +00:00
#ifndef KERNEL_KE_RWLOCK_H
#define KERNEL_KE_RWLOCK_H
2018-02-18 04:06:57 +00:00
2018-01-26 08:43:22 +00:00
#include "kernel/ke/spin_lock.h"
#include "type.h"
typedef struct
{
2018-02-18 04:06:57 +00:00
k_spin_lock_t w_mutex;
k_spin_lock_t r_mutex;
k_spin_lock_t res_lock;
k_spin_lock_t r_try;
2018-03-24 00:58:24 +00:00
uint32 reader_ct;
uint32 writer_ct;
} k_rwwlock_t;
2018-02-18 07:48:59 +00:00
void SXAPI ke_rwwlock_init(k_rwwlock_t *lock);
2018-02-18 07:48:59 +00:00
void SXAPI ke_rwwlock_reader_lock(k_rwwlock_t *lock);
2018-02-18 07:48:59 +00:00
void SXAPI ke_rwwlock_reader_unlock(k_rwwlock_t *lock);
2018-02-18 07:48:59 +00:00
void SXAPI ke_rwwlock_writer_lock(k_rwwlock_t *lock);
2018-02-18 07:48:59 +00:00
void SXAPI ke_rwwlock_writer_unlock(k_rwwlock_t *lock);
2018-03-24 00:58:24 +00:00
k_irql SXAPI ke_rwwlock_reader_lock_raise_irql(k_rwwlock_t *lock, k_irql irql);
2018-03-24 00:58:24 +00:00
void SXAPI ke_rwwlock_reader_unlock_lower_irql(k_rwwlock_t *lock, k_irql irql);
2018-03-24 00:58:24 +00:00
k_irql SXAPI ke_rwwlock_writer_lock_raise_irql(k_rwwlock_t *lock, k_irql irql);
2018-03-24 00:58:24 +00:00
void SXAPI ke_rwwlock_writer_unlock_lower_irql(k_rwwlock_t *lock, k_irql irql);
#endif
2018-03-24 00:58:24 +00:00