diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pack-objects.c | 2 | ||||
| -rw-r--r-- | src/thread-utils.h | 13 | ||||
| -rw-r--r-- | src/unix/pthread.h | 20 | ||||
| -rw-r--r-- | src/win32/pthread.c | 13 | ||||
| -rw-r--r-- | src/win32/pthread.h | 22 |
5 files changed, 31 insertions, 39 deletions
diff --git a/src/pack-objects.c b/src/pack-objects.c index 11e13f7d4..29231e028 100644 --- a/src/pack-objects.c +++ b/src/pack-objects.c @@ -1186,7 +1186,7 @@ static int ll_find_deltas(git_packbuilder *pb, git_pobject **list, git_mutex_init(&p[i].mutex); git_cond_init(&p[i].cond); - ret = git_thread_create(&p[i].thread, NULL, + ret = git_thread_create(&p[i].thread, threaded_find_deltas, &p[i]); if (ret) { giterr_set(GITERR_THREAD, "unable to create thread"); diff --git a/src/thread-utils.h b/src/thread-utils.h index 14c8a41ff..11c026f33 100644 --- a/src/thread-utils.h +++ b/src/thread-utils.h @@ -41,16 +41,7 @@ typedef git_atomic git_atomic_ssize; #ifdef GIT_THREADS #if !defined(GIT_WIN32) - -typedef struct { - pthread_t thread; -} git_thread; - -#define git_thread_create(git_thread_ptr, attr, start_routine, arg) \ - pthread_create(&(git_thread_ptr)->thread, attr, start_routine, arg) -#define git_thread_join(git_thread_ptr, status) \ - pthread_join((git_thread_ptr)->thread, status) - +# include "unix/pthread.h" #endif /* Pthreads Mutex */ @@ -178,7 +169,7 @@ GIT_INLINE(int64_t) git_atomic64_add(git_atomic64 *a, int64_t addend) #else #define git_thread unsigned int -#define git_thread_create(thread, attr, start_routine, arg) 0 +#define git_thread_create(thread, start_routine, arg) 0 #define git_thread_join(id, status) (void)0 /* Pthreads Mutex */ diff --git a/src/unix/pthread.h b/src/unix/pthread.h new file mode 100644 index 000000000..87384a4ab --- /dev/null +++ b/src/unix/pthread.h @@ -0,0 +1,20 @@ +/* + * 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_unix_pthread_h__ +#define INCLUDE_unix_pthread_h__ + +typedef struct { + pthread_t thread; +} git_thread; + +#define git_thread_create(git_thread_ptr, start_routine, arg) \ + pthread_create(&(git_thread_ptr)->thread, NULL, start_routine, arg) +#define git_thread_join(git_thread_ptr, status) \ + pthread_join((git_thread_ptr)->thread, status) + +#endif /* INCLUDE_unix_pthread_h__ */ diff --git a/src/win32/pthread.c b/src/win32/pthread.c index a1cc18932..d8ed4bb1b 100644 --- a/src/win32/pthread.c +++ b/src/win32/pthread.c @@ -16,7 +16,7 @@ * void pointer. This requires the indirection. */ static DWORD WINAPI git_win32__threadproc(LPVOID lpParameter) { - git_win32_thread *thread = lpParameter; + git_thread *thread = lpParameter; thread->result = thread->proc(thread->param); @@ -25,14 +25,11 @@ static DWORD WINAPI git_win32__threadproc(LPVOID lpParameter) return CLEAN_THREAD_EXIT; } -int git_win32__thread_create( - git_win32_thread *GIT_RESTRICT thread, - const pthread_attr_t *GIT_RESTRICT attr, +int git_thread_create( + git_thread *GIT_RESTRICT thread, void *(*start_routine)(void*), void *GIT_RESTRICT arg) { - GIT_UNUSED(attr); - thread->result = NULL; thread->param = arg; thread->proc = start_routine; @@ -42,8 +39,8 @@ int git_win32__thread_create( return thread->thread ? 0 : -1; } -int git_win32__thread_join( - git_win32_thread *thread, +int git_thread_join( + git_thread *thread, void **value_ptr) { DWORD exit; diff --git a/src/win32/pthread.h b/src/win32/pthread.h index e4826ca7f..fa99b01d6 100644 --- a/src/win32/pthread.h +++ b/src/win32/pthread.h @@ -21,7 +21,7 @@ typedef struct { void *(*proc)(void *); void *param; void *result; -} git_win32_thread; +} git_thread; typedef int pthread_mutexattr_t; typedef int pthread_condattr_t; @@ -42,26 +42,10 @@ typedef struct { #define PTHREAD_MUTEX_INITIALIZER {(void*)-1} -int git_win32__thread_create( - git_win32_thread *GIT_RESTRICT, - const pthread_attr_t *GIT_RESTRICT, +int git_thread_create(git_thread *GIT_RESTRICT, void *(*) (void *), void *GIT_RESTRICT); - -int git_win32__thread_join( - git_win32_thread *, - void **); - -#ifdef GIT_THREADS - -typedef git_win32_thread git_thread; - -#define git_thread_create(git_thread_ptr, attr, start_routine, arg) \ - git_win32__thread_create(git_thread_ptr, attr, start_routine, arg) -#define git_thread_join(git_thread_ptr, status) \ - git_win32__thread_join(git_thread_ptr, status) - -#endif +int git_thread_join(git_thread *, void **); int pthread_mutex_init( pthread_mutex_t *GIT_RESTRICT mutex, |
