summaryrefslogtreecommitdiff
path: root/src/win32/thread.h
diff options
context:
space:
mode:
authorEdward Thomson <ethomson@github.com>2016-06-20 22:50:46 -0400
committerGitHub <noreply@github.com>2016-06-20 22:50:46 -0400
commitbb0edf87ce33cbf454fa13490621230cb43d247b (patch)
treea17055e9b5493fd7fe1836f061e83f57ab861181 /src/win32/thread.h
parentc80efb5f6db4bff67089f4a67906ad831a9a09d9 (diff)
parentaab266c93256fbf89a000778b454c5d60bae43a9 (diff)
downloadlibgit2-bb0edf87ce33cbf454fa13490621230cb43d247b.tar.gz
Merge pull request #3830 from pks-t/pks/thread-namespacing
Thread namespacing
Diffstat (limited to 'src/win32/thread.h')
-rw-r--r--src/win32/thread.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/win32/thread.h b/src/win32/thread.h
new file mode 100644
index 000000000..0d01822a6
--- /dev/null
+++ b/src/win32/thread.h
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#ifndef INCLUDE_win32_thread_h__
+#define INCLUDE_win32_thread_h__
+
+#include "../common.h"
+
+#if defined (_MSC_VER)
+# define GIT_RESTRICT __restrict
+#else
+# define GIT_RESTRICT __restrict__
+#endif
+
+typedef struct {
+ HANDLE thread;
+ void *(*proc)(void *);
+ void *param;
+ void *result;
+} git_thread;
+
+typedef CRITICAL_SECTION git_mutex;
+typedef HANDLE git_cond;
+
+typedef struct { void *Ptr; } GIT_SRWLOCK;
+
+typedef struct {
+ union {
+ GIT_SRWLOCK srwl;
+ CRITICAL_SECTION csec;
+ } native;
+} git_rwlock;
+
+int git_threads_init(void);
+
+int git_thread_create(git_thread *GIT_RESTRICT,
+ void *(*) (void *),
+ void *GIT_RESTRICT);
+int git_thread_join(git_thread *, void **);
+
+int git_mutex_init(git_mutex *GIT_RESTRICT mutex);
+int git_mutex_free(git_mutex *);
+int git_mutex_lock(git_mutex *);
+int git_mutex_unlock(git_mutex *);
+
+int git_cond_init(git_cond *);
+int git_cond_free(git_cond *);
+int git_cond_wait(git_cond *, git_mutex *);
+int git_cond_signal(git_cond *);
+
+int git_rwlock_init(git_rwlock *GIT_RESTRICT lock);
+int git_rwlock_rdlock(git_rwlock *);
+int git_rwlock_rdunlock(git_rwlock *);
+int git_rwlock_wrlock(git_rwlock *);
+int git_rwlock_wrunlock(git_rwlock *);
+int git_rwlock_free(git_rwlock *);
+
+#endif /* INCLUDE_win32_thread_h__ */