mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-09 20:29:27 +00:00
threads: split up OS-dependent thread-condition code
This commit is contained in:
parent
20d078dff1
commit
139bffa074
@ -46,13 +46,6 @@ typedef git_atomic git_atomic_ssize;
|
|||||||
# include "unix/pthread.h"
|
# include "unix/pthread.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Pthreads condition vars */
|
|
||||||
#define git_cond pthread_cond_t
|
|
||||||
#define git_cond_init(c) pthread_cond_init(c, NULL)
|
|
||||||
#define git_cond_free(c) pthread_cond_destroy(c)
|
|
||||||
#define git_cond_wait(c, l) pthread_cond_wait(c, l)
|
|
||||||
#define git_cond_signal(c) pthread_cond_signal(c)
|
|
||||||
|
|
||||||
/* Pthread (-ish) rwlock
|
/* Pthread (-ish) rwlock
|
||||||
*
|
*
|
||||||
* This differs from normal pthreads rwlocks in two ways:
|
* This differs from normal pthreads rwlocks in two ways:
|
||||||
|
@ -24,4 +24,12 @@ typedef struct {
|
|||||||
#define git_mutex_unlock(a) pthread_mutex_unlock(a)
|
#define git_mutex_unlock(a) pthread_mutex_unlock(a)
|
||||||
#define git_mutex_free(a) pthread_mutex_destroy(a)
|
#define git_mutex_free(a) pthread_mutex_destroy(a)
|
||||||
|
|
||||||
|
/* Git condition vars */
|
||||||
|
#define git_cond pthread_cond_t
|
||||||
|
#define git_cond_init(c) pthread_cond_init(c, NULL)
|
||||||
|
#define git_cond_free(c) pthread_cond_destroy(c)
|
||||||
|
#define git_cond_wait(c, l) pthread_cond_wait(c, l)
|
||||||
|
#define git_cond_signal(c) pthread_cond_signal(c)
|
||||||
|
#define git_cond_broadcast(c) pthread_cond_broadcast(c)
|
||||||
|
|
||||||
#endif /* INCLUDE_unix_pthread_h__ */
|
#endif /* INCLUDE_unix_pthread_h__ */
|
||||||
|
@ -91,12 +91,8 @@ int git_mutex_unlock(git_mutex *mutex)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
|
int git_cond_init(git_cond *cond)
|
||||||
{
|
{
|
||||||
/* We don't support non-default attributes. */
|
|
||||||
if (attr)
|
|
||||||
return EINVAL;
|
|
||||||
|
|
||||||
/* This is an auto-reset event. */
|
/* This is an auto-reset event. */
|
||||||
*cond = CreateEventW(NULL, FALSE, FALSE, NULL);
|
*cond = CreateEventW(NULL, FALSE, FALSE, NULL);
|
||||||
assert(*cond);
|
assert(*cond);
|
||||||
@ -106,7 +102,7 @@ int pthread_cond_init(pthread_cond_t *cond, const pthread_condattr_t *attr)
|
|||||||
return *cond ? 0 : ENOMEM;
|
return *cond ? 0 : ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pthread_cond_destroy(pthread_cond_t *cond)
|
int git_cond_free(git_cond *cond)
|
||||||
{
|
{
|
||||||
BOOL closed;
|
BOOL closed;
|
||||||
|
|
||||||
@ -121,7 +117,7 @@ int pthread_cond_destroy(pthread_cond_t *cond)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int pthread_cond_wait(pthread_cond_t *cond, git_mutex *mutex)
|
int git_cond_wait(git_cond *cond, git_mutex *mutex)
|
||||||
{
|
{
|
||||||
int error;
|
int error;
|
||||||
DWORD wait_result;
|
DWORD wait_result;
|
||||||
@ -142,7 +138,7 @@ int pthread_cond_wait(pthread_cond_t *cond, git_mutex *mutex)
|
|||||||
return git_mutex_lock(mutex);
|
return git_mutex_lock(mutex);
|
||||||
}
|
}
|
||||||
|
|
||||||
int pthread_cond_signal(pthread_cond_t *cond)
|
int git_cond_signal(git_cond *cond)
|
||||||
{
|
{
|
||||||
BOOL signaled;
|
BOOL signaled;
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@ typedef int pthread_attr_t;
|
|||||||
typedef int pthread_rwlockattr_t;
|
typedef int pthread_rwlockattr_t;
|
||||||
|
|
||||||
typedef CRITICAL_SECTION git_mutex;
|
typedef CRITICAL_SECTION git_mutex;
|
||||||
typedef HANDLE pthread_cond_t;
|
typedef HANDLE git_cond;
|
||||||
|
|
||||||
typedef struct { void *Ptr; } GIT_SRWLOCK;
|
typedef struct { void *Ptr; } GIT_SRWLOCK;
|
||||||
|
|
||||||
@ -52,10 +52,10 @@ int git_mutex_free(git_mutex *);
|
|||||||
int git_mutex_lock(git_mutex *);
|
int git_mutex_lock(git_mutex *);
|
||||||
int git_mutex_unlock(git_mutex *);
|
int git_mutex_unlock(git_mutex *);
|
||||||
|
|
||||||
int pthread_cond_init(pthread_cond_t *, const pthread_condattr_t *);
|
int git_cond_init(git_cond *);
|
||||||
int pthread_cond_destroy(pthread_cond_t *);
|
int git_cond_free(git_cond *);
|
||||||
int pthread_cond_wait(pthread_cond_t *, git_mutex *);
|
int git_cond_wait(git_cond *, git_mutex *);
|
||||||
int pthread_cond_signal(pthread_cond_t *);
|
int git_cond_signal(git_cond *);
|
||||||
|
|
||||||
int pthread_num_processors_np(void);
|
int pthread_num_processors_np(void);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user