Add support for rwlock

This commit is contained in:
vemax78 2013-11-02 19:04:56 +01:00
parent b7964ec3af
commit 769d0f414e
3 changed files with 66 additions and 0 deletions

View File

@ -44,6 +44,7 @@ ac_SOURCES = \
$(capwap_SOURCES) \
$(top_srcdir)/src/common/capwap_event.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/ac/ac.c \
$(top_srcdir)/src/ac/ac_backend.c \

View 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);
}

View 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__ */