adding RWLOCKS and [sg]etspecific
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@12490 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -63,6 +63,22 @@
|
||||
#define HEIMDAL_MUTEX_unlock(m) mutex_unlock(m)
|
||||
#define HEIMDAL_MUTEX_destroy(m) mutex_destroy(m)
|
||||
|
||||
#define HEIMDAL_RWLOCK rwlock_t
|
||||
#define HEIMDAL_RWLOCK_INITIALIZER RWLOCK_INITIALIZER
|
||||
#define HEIMDAL_RWLOCK_init(l) rwlock_init(l, NULL)
|
||||
#define HEIMDAL_RWLOCK_rdlock(l) rwlock_rdlock(l)
|
||||
#define HEIMDAL_RWLOCK_wrlock(l) rwlock_wrlock(l)
|
||||
#define HEIMDAL_RWLOCK_tryrdlock(l) rwlock_tryrdlock(l)
|
||||
#define HEIMDAL_RWLOCK_trywrlock(l) rwlock_trywrlock(l)
|
||||
#define HEIMDAL_RWLOCK_unlock(l) rwlock_unlock(l)
|
||||
#define HEIMDAL_RWLOCK_destroy(l) rwlock_destroy(l)
|
||||
|
||||
#define HEIMDAL_thread_key thread_key_t
|
||||
#define HEIMDAL_key_create(k,d) thr_keycreate(k,d)
|
||||
#define HEIMDAL_setspecific(k,s) thr_setspecific(k,s)
|
||||
#define HEIMDAL_getspecific(k) thr_getspecific(k)
|
||||
#define HEIMDAL_key_delete(k) thr_keydelete(k)
|
||||
|
||||
#elif defined(ENABLE_PTHREAD_SUPPORT)
|
||||
|
||||
#define HEIMDAL_MUTEX pthread_mutex_t
|
||||
@@ -72,6 +88,22 @@
|
||||
#define HEIMDAL_MUTEX_unlock(m) pthread_mutex_unlock(m)
|
||||
#define HEIMDAL_MUTEX_destroy(m) pthread_mutex_destroy(m)
|
||||
|
||||
#define HEIMDAL_RWLOCK rwlock_t
|
||||
#define HEIMDAL_RWLOCK_INITIALIZER RWLOCK_INITIALIZER
|
||||
#define HEIMDAL_RWLOCK_init(l) pthread_rwlock_init(l, NULL)
|
||||
#define HEIMDAL_RWLOCK_rdlock(l) pthread_rwlock_rdlock(l)
|
||||
#define HEIMDAL_RWLOCK_wrlock(l) pthread_rwlock_wrlock(l)
|
||||
#define HEIMDAL_RWLOCK_tryrdlock(l) pthread_rwlock_tryrdlock(l)
|
||||
#define HEIMDAL_RWLOCK_trywrlock(l) pthread_rwlock_trywrlock(l)
|
||||
#define HEIMDAL_RWLOCK_unlock(l) pthread_rwlock_unlock(l)
|
||||
#define HEIMDAL_RWLOCK_destroy(l) pthread_rwlock_destroy(l)
|
||||
|
||||
#define HEIMDAL_thread_key pthread_key_t
|
||||
#define HEIMDAL_key_create(k,d) pthread_key_create(k,d)
|
||||
#define HEIMDAL_setspecific(k,s) pthread_setspecific(k,s)
|
||||
#define HEIMDAL_getspecific(k) pthread_setspecific(k)
|
||||
#define HEIMDAL_key_delete(k) pthread_key_delete(k)
|
||||
|
||||
#elif defined(HEIMDAL_DEBUG_THREADS)
|
||||
|
||||
/* no threads support, just do consistency checks */
|
||||
@@ -84,6 +116,18 @@
|
||||
#define HEIMDAL_MUTEX_unlock(m) do { if ((*(m))-- != 1) abort(); } while(0)
|
||||
#define HEIMDAL_MUTEX_destroy(m) do {if ((*(m)) != 0) abort(); } while(0)
|
||||
|
||||
#define HEIMDAL_RWLOCK rwlock_t int
|
||||
#define HEIMDAL_RWLOCK_INITIALIZER 0
|
||||
#define HEIMDAL_RWLOCK_init(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_rdlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_wrlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_tryrdlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_trywrlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_unlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_destroy(l) do { } while(0)
|
||||
|
||||
#define HEIMDAL_internal_thread_key 1
|
||||
|
||||
#else /* no thread support, no debug case */
|
||||
|
||||
#define HEIMDAL_MUTEX int
|
||||
@@ -93,6 +137,35 @@
|
||||
#define HEIMDAL_MUTEX_unlock(m) do { } while(0)
|
||||
#define HEIMDAL_MUTEX_destroy(m) do { } while(0)
|
||||
|
||||
#define HEIMDAL_RWLOCK rwlock_t int
|
||||
#define HEIMDAL_RWLOCK_INITIALIZER 0
|
||||
#define HEIMDAL_RWLOCK_init(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_rdlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_wrlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_tryrdlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_trywrlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_unlock(l) do { } while(0)
|
||||
#define HEIMDAL_RWLOCK_destroy(l) do { } while(0)
|
||||
|
||||
#define HEIMDAL_internal_thread_key 1
|
||||
|
||||
#endif /* no thread support */
|
||||
|
||||
#ifdef HEIMDAL_internal_thread_key
|
||||
|
||||
typedef struct heim_thread_key {
|
||||
void *value;
|
||||
void (*destructor)(void *);
|
||||
} heim_thread_key;
|
||||
|
||||
#define HEIMDAL_thread_key heim_thread_key
|
||||
#define HEIMDAL_key_create(k,d) \
|
||||
do { (k)->value = NULL; (k)->destructor = (d); } while(0)
|
||||
#define HEIMDAL_setspecific(k,s) do { (k)->value = s ; } while(0)
|
||||
#define HEIMDAL_getspecific(k) ((k)->value)
|
||||
#define HEIMDAL_key_delete(k) do { (*(k)->destructor)((k)->value); } while(0)
|
||||
|
||||
#undef HEIMDAL_internal_thread_key
|
||||
#endif /* HEIMDAL_internal_thread_key */
|
||||
|
||||
#endif /* HEIM_THREADS_H */
|
||||
|
Reference in New Issue
Block a user