]> git.proxmox.com Git - libgit2.git/blame - src/win32/pthread.c
Update Copyright header
[libgit2.git] / src / win32 / pthread.c
CommitLineData
bbcc7ffc 1/*
5e0de328 2 * Copyright (C) 2009-2012 the libgit2 contributors
bbcc7ffc 3 *
bb742ede
VM
4 * This file is part of libgit2, distributed under the GNU GPL v2 with
5 * a Linking Exception. For full terms see the included COPYING file.
bbcc7ffc
VM
6 */
7
8#include "pthread.h"
9
10int pthread_create(pthread_t *GIT_RESTRICT thread,
87d9869f
VM
11 const pthread_attr_t *GIT_RESTRICT GIT_UNUSED(attr),
12 void *(*start_routine)(void*), void *GIT_RESTRICT arg)
bbcc7ffc
VM
13{
14 GIT_UNUSED_ARG(attr);
15 *thread = (pthread_t) CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)start_routine, arg, 0, NULL);
a6d647d2 16 return *thread ? GIT_SUCCESS : git__throw(GIT_EOSERR, "Failed to create pthread");
bbcc7ffc
VM
17}
18
bbcc7ffc
VM
19int pthread_join(pthread_t thread, void **value_ptr)
20{
87d9869f
VM
21 int ret;
22 ret = WaitForSingleObject(thread, INFINITE);
23 if (ret && value_ptr)
24 GetExitCodeThread(thread, (void*) value_ptr);
25 return -(!!ret);
bbcc7ffc
VM
26}
27
bb3de0c4 28int pthread_mutex_init(pthread_mutex_t *GIT_RESTRICT mutex,
87d9869f 29 const pthread_mutexattr_t *GIT_RESTRICT GIT_UNUSED(mutexattr))
bbcc7ffc 30{
87d9869f
VM
31 GIT_UNUSED_ARG(mutexattr);
32 InitializeCriticalSection(mutex);
33 return 0;
bbcc7ffc
VM
34}
35
36int pthread_mutex_destroy(pthread_mutex_t *mutex)
37{
87d9869f
VM
38 DeleteCriticalSection(mutex);
39 return 0;
bbcc7ffc
VM
40}
41
bb3de0c4 42int pthread_mutex_lock(pthread_mutex_t *mutex)
bbcc7ffc 43{
87d9869f
VM
44 EnterCriticalSection(mutex);
45 return 0;
bbcc7ffc
VM
46}
47
bb3de0c4 48int pthread_mutex_unlock(pthread_mutex_t *mutex)
bbcc7ffc 49{
87d9869f
VM
50 LeaveCriticalSection(mutex);
51 return 0;
bbcc7ffc
VM
52}
53
54int pthread_num_processors_np(void)
55{
87d9869f
VM
56 DWORD_PTR p, s;
57 int n = 0;
bbcc7ffc 58
87d9869f
VM
59 if (GetProcessAffinityMask(GetCurrentProcess(), &p, &s))
60 for (; p; p >>= 1)
61 n += p&1;
bbcc7ffc 62
87d9869f 63 return n ? n : 1;
bbcc7ffc
VM
64}
65