aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/nx/win/nxthread.c
blob: 0c049ad498305a6678cbf7333cdf8fb6dc7d8129 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include "nxthread.h"
#include "foundation/error.h"

int NXThreadCreate(nx_thread_t *thread, nx_thread_func_t thread_function, nx_thread_parameter_t parameter)
{
	*thread = (nx_thread_t)CreateThread(0, 0, thread_function, parameter, 0, 0);
	return NErr_Success;
}

int NXThreadJoin(nx_thread_t t, nx_thread_return_t *retval)
{
	if (!t)
		return NErr_NullPointer;
	WaitForSingleObject((HANDLE)t, INFINITE);
	if (retval)
		GetExitCodeThread((HANDLE)t, retval);
	CloseHandle((HANDLE)t);
	return NErr_Success;
}

int NXThreadCurrentSetPriority(int priority)
{
	SetThreadPriority(GetCurrentThread(), priority);
	return NErr_Success;
}