]> git.proxmox.com Git - mirror_edk2.git/blame - BaseTools/Source/C/LzmaCompress/Sdk/C/Threads.h
BaseTools Lzma: Update LZMA SDK version to 18.05
[mirror_edk2.git] / BaseTools / Source / C / LzmaCompress / Sdk / C / Threads.h
CommitLineData
30fdf114 1/* Threads.h -- multithreading library\r
5ec5a236 22017-06-18 : Igor Pavlov : Public domain */\r
30fdf114 3\r
c4ab09ef
LG
4#ifndef __7Z_THREADS_H\r
5#define __7Z_THREADS_H\r
30fdf114 6\r
c4ab09ef
LG
7#ifdef _WIN32\r
8#include <windows.h>\r
9#endif\r
30fdf114 10\r
c4ab09ef 11#include "7zTypes.h"\r
30fdf114 12\r
c4ab09ef 13EXTERN_C_BEGIN\r
30fdf114 14\r
c4ab09ef
LG
15WRes HandlePtr_Close(HANDLE *h);\r
16WRes Handle_WaitObject(HANDLE h);\r
30fdf114 17\r
c4ab09ef
LG
18typedef HANDLE CThread;\r
19#define Thread_Construct(p) *(p) = NULL\r
20#define Thread_WasCreated(p) (*(p) != NULL)\r
21#define Thread_Close(p) HandlePtr_Close(p)\r
22#define Thread_Wait(p) Handle_WaitObject(*(p))\r
30fdf114 23\r
c4ab09ef
LG
24typedef\r
25#ifdef UNDER_CE\r
26 DWORD\r
27#else\r
28 unsigned\r
29#endif\r
30 THREAD_FUNC_RET_TYPE;\r
30fdf114 31\r
c4ab09ef
LG
32#define THREAD_FUNC_CALL_TYPE MY_STD_CALL\r
33#define THREAD_FUNC_DECL THREAD_FUNC_RET_TYPE THREAD_FUNC_CALL_TYPE\r
34typedef THREAD_FUNC_RET_TYPE (THREAD_FUNC_CALL_TYPE * THREAD_FUNC_TYPE)(void *);\r
35WRes Thread_Create(CThread *p, THREAD_FUNC_TYPE func, LPVOID param);\r
30fdf114 36\r
c4ab09ef
LG
37typedef HANDLE CEvent;\r
38typedef CEvent CAutoResetEvent;\r
39typedef CEvent CManualResetEvent;\r
40#define Event_Construct(p) *(p) = NULL\r
41#define Event_IsCreated(p) (*(p) != NULL)\r
42#define Event_Close(p) HandlePtr_Close(p)\r
43#define Event_Wait(p) Handle_WaitObject(*(p))\r
44WRes Event_Set(CEvent *p);\r
45WRes Event_Reset(CEvent *p);\r
46WRes ManualResetEvent_Create(CManualResetEvent *p, int signaled);\r
47WRes ManualResetEvent_CreateNotSignaled(CManualResetEvent *p);\r
48WRes AutoResetEvent_Create(CAutoResetEvent *p, int signaled);\r
49WRes AutoResetEvent_CreateNotSignaled(CAutoResetEvent *p);\r
50\r
51typedef HANDLE CSemaphore;\r
5ec5a236
LG
52#define Semaphore_Construct(p) *(p) = NULL\r
53#define Semaphore_IsCreated(p) (*(p) != NULL)\r
c4ab09ef
LG
54#define Semaphore_Close(p) HandlePtr_Close(p)\r
55#define Semaphore_Wait(p) Handle_WaitObject(*(p))\r
56WRes Semaphore_Create(CSemaphore *p, UInt32 initCount, UInt32 maxCount);\r
30fdf114
LG
57WRes Semaphore_ReleaseN(CSemaphore *p, UInt32 num);\r
58WRes Semaphore_Release1(CSemaphore *p);\r
30fdf114
LG
59\r
60typedef CRITICAL_SECTION CCriticalSection;\r
30fdf114
LG
61WRes CriticalSection_Init(CCriticalSection *p);\r
62#define CriticalSection_Delete(p) DeleteCriticalSection(p)\r
63#define CriticalSection_Enter(p) EnterCriticalSection(p)\r
64#define CriticalSection_Leave(p) LeaveCriticalSection(p)\r
65\r
c4ab09ef 66EXTERN_C_END\r
30fdf114 67\r
c4ab09ef 68#endif\r