Add support for rwlock
This commit is contained in:
parent
b7964ec3af
commit
769d0f414e
@ -44,6 +44,7 @@ ac_SOURCES = \
|
|||||||
$(capwap_SOURCES) \
|
$(capwap_SOURCES) \
|
||||||
$(top_srcdir)/src/common/capwap_event.c \
|
$(top_srcdir)/src/common/capwap_event.c \
|
||||||
$(top_srcdir)/src/common/capwap_lock.c \
|
$(top_srcdir)/src/common/capwap_lock.c \
|
||||||
|
$(top_srcdir)/src/common/capwap_rwlock.c \
|
||||||
$(top_srcdir)/src/common/capwap_socket.c \
|
$(top_srcdir)/src/common/capwap_socket.c \
|
||||||
$(top_srcdir)/src/ac/ac.c \
|
$(top_srcdir)/src/ac/ac.c \
|
||||||
$(top_srcdir)/src/ac/ac_backend.c \
|
$(top_srcdir)/src/ac/ac_backend.c \
|
||||||
|
45
src/common/capwap_rwlock.c
Normal file
45
src/common/capwap_rwlock.c
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
#include "capwap.h"
|
||||||
|
#include "capwap_rwlock.h"
|
||||||
|
|
||||||
|
#ifndef CAPWAP_MULTITHREADING_ENABLE
|
||||||
|
#error "Warning: multithreading is disabled\n"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* */
|
||||||
|
int capwap_rwlock_init(capwap_rwlock_t* lock) {
|
||||||
|
ASSERT(lock != NULL);
|
||||||
|
|
||||||
|
if (pthread_rwlock_init(&lock->rwlock, NULL)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* */
|
||||||
|
void capwap_rwlock_destroy(capwap_rwlock_t* lock) {
|
||||||
|
ASSERT(lock != NULL);
|
||||||
|
|
||||||
|
pthread_rwlock_destroy(&lock->rwlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* */
|
||||||
|
void capwap_rwlock_rdlock(capwap_rwlock_t* lock) {
|
||||||
|
ASSERT(lock != NULL);
|
||||||
|
|
||||||
|
pthread_rwlock_rdlock(&lock->rwlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* */
|
||||||
|
void capwap_rwlock_wrlock(capwap_rwlock_t* lock) {
|
||||||
|
ASSERT(lock != NULL);
|
||||||
|
|
||||||
|
pthread_rwlock_wrlock(&lock->rwlock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* */
|
||||||
|
void capwap_rwlock_exit(capwap_rwlock_t* lock) {
|
||||||
|
ASSERT(lock != NULL);
|
||||||
|
|
||||||
|
pthread_rwlock_unlock(&lock->rwlock);
|
||||||
|
}
|
20
src/common/capwap_rwlock.h
Normal file
20
src/common/capwap_rwlock.h
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#ifndef __CAPWAP_RWLOCK_HEADER__
|
||||||
|
#define __CAPWAP_RWLOCK_HEADER__
|
||||||
|
|
||||||
|
#ifdef CAPWAP_MULTITHREADING_ENABLE
|
||||||
|
|
||||||
|
#include <pthread.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
pthread_rwlock_t rwlock;
|
||||||
|
} capwap_rwlock_t;
|
||||||
|
|
||||||
|
int capwap_rwlock_init(capwap_rwlock_t* lock);
|
||||||
|
void capwap_rwlock_destroy(capwap_rwlock_t* lock);
|
||||||
|
void capwap_rwlock_rdlock(capwap_rwlock_t* lock);
|
||||||
|
void capwap_rwlock_wrlock(capwap_rwlock_t* lock);
|
||||||
|
void capwap_rwlock_exit(capwap_rwlock_t* lock);
|
||||||
|
|
||||||
|
#endif /* CAPWAP_MULTITHREADING_ENABLE */
|
||||||
|
|
||||||
|
#endif /* __CAPWAP_RWLOCK_HEADER__ */
|
Loading…
Reference in New Issue
Block a user