diff options
| author | Russell Belfer <rb@github.com> | 2013-08-26 14:56:31 -0700 |
|---|---|---|
| committer | Russell Belfer <rb@github.com> | 2013-08-26 14:56:31 -0700 |
| commit | 430953417f74dfcdbe030bafc069e1c07edceeb6 (patch) | |
| tree | b8276cc0ec5e481307202ec00ef7abcade6e9d98 /src/win32/pthread.h | |
| parent | 44d655318661affa2feb51e9d6d533bb16d7f2b5 (diff) | |
| download | libgit2-430953417f74dfcdbe030bafc069e1c07edceeb6.tar.gz | |
Load SRWLock APIs at runtime
This loads SRWLock APIs at runtime and in their absence (i.e. on
Windows before Vista) falls back on a regular CRITICAL_SECTION
that will not permit concurrent readers.
Diffstat (limited to 'src/win32/pthread.h')
| -rw-r--r-- | src/win32/pthread.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/win32/pthread.h b/src/win32/pthread.h index 50d836247..e84de471f 100644 --- a/src/win32/pthread.h +++ b/src/win32/pthread.h @@ -24,10 +24,17 @@ typedef int pthread_rwlockattr_t; typedef CRITICAL_SECTION pthread_mutex_t; typedef HANDLE pthread_t; typedef HANDLE pthread_cond_t; -typedef SRWLOCK pthread_rwlock_t; + +/* typedef struct { void *Ptr; } SRWLOCK; */ + +typedef struct { + union { + SRWLOCK srwl; + CRITICAL_SECTION csec; + } native; +} pthread_rwlock_t; #define PTHREAD_MUTEX_INITIALIZER {(void*)-1} -#define PTHREAD_RWLOCK_INITIALIZER SRWLOCK_INIT int pthread_create( pthread_t *GIT_RESTRICT thread, @@ -61,4 +68,7 @@ int pthread_rwlock_wrlock(pthread_rwlock_t *); int pthread_rwlock_wrunlock(pthread_rwlock_t *); int pthread_rwlock_destroy(pthread_rwlock_t *); +extern int win32_pthread_initialize(void); +extern int win32_pthread_shutdown(void); + #endif |
