diff options
author | inmarket <andrewh@inmarket.com.au> | 2013-06-02 18:57:22 +1000 |
---|---|---|
committer | inmarket <andrewh@inmarket.com.au> | 2013-06-02 18:57:22 +1000 |
commit | 1c258a82738e145953fc9cf40c68dcce6db87d92 (patch) | |
tree | c151e882619714d696276ce29ef3388dce6e1866 /include/gos/win32.h | |
parent | c2a4f9a5d616f5b18a965652d7492aacd377e5e2 (diff) | |
download | uGFX-1c258a82738e145953fc9cf40c68dcce6db87d92.tar.gz uGFX-1c258a82738e145953fc9cf40c68dcce6db87d92.tar.bz2 uGFX-1c258a82738e145953fc9cf40c68dcce6db87d92.zip |
GOS updates
Diffstat (limited to 'include/gos/win32.h')
-rw-r--r-- | include/gos/win32.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/include/gos/win32.h b/include/gos/win32.h index 80a1f430..d61de187 100644 --- a/include/gos/win32.h +++ b/include/gos/win32.h @@ -30,6 +30,9 @@ //#define WIN32_LEAN_AND_MEAN #include <windows.h> +/* Stop cygwin from defining these types */ +#define __int8_t_defined + /** * size_t * TRUE, FALSE @@ -45,10 +48,11 @@ typedef unsigned __int32 uint32_t; typedef DWORD delaytime_t; typedef DWORD systemticks_t; typedef LONG semcount_t; -#define threadreturn_t DWORD WINAPI +typedef DWORD threadreturn_t; typedef int threadpriority_t; -typedef threadreturn_t (*gfxThreadFunction)(void *param); +#define DECLARE_THREAD_FUNCTION(fnName, param) threadreturn_t WINAPI fnName(void *param) +#define DECLARE_THREAD_STACK(name, sz) uint8_t name[0]; #define TIME_IMMEDIATE 0 #define TIME_INFINITE INFINITE @@ -56,10 +60,10 @@ typedef threadreturn_t (*gfxThreadFunction)(void *param); #define LOW_PRIORITY THREAD_PRIORITY_BELOW_NORMAL #define NORMAL_PRIORITY THREAD_PRIORITY_NORMAL #define HIGH_PRIORITY THREAD_PRIORITY_ABOVE_NORMAL -#define DECLARESTACK(name, sz) uint8_t name[0]; typedef HANDLE gfxSem; typedef HANDLE gfxMutex; +typedef HANDLE gfxThreadHandle; #define gfxExit() ExitProcess(0) #define gfxAlloc(sz) malloc(sz) @@ -77,6 +81,8 @@ typedef HANDLE gfxMutex; #define gfxSemSignal(psem) ReleaseSemaphore(*(psem), 1, NULL) #define gfxSemSignalI(psem) ReleaseSemaphore(*(psem), 1, NULL) #define gfxSemCounterI(psem) gfxSemCounter(psem) +#define gfxThreadMe() GetCurrentThread() +#define gfxThreadClose(thread) CloseHandle(thread) /*===========================================================================*/ /* Function declarations. */ @@ -92,7 +98,8 @@ bool_t gfxSemWait(gfxSem *psem, delaytime_t ms); semcount_t gfxSemCounter(gfxSem *pSem); void gfxSystemLock(void); void gfxSystemUnlock(void); -bool_t gfxCreateThread(void *stackarea, size_t stacksz, threadpriority_t prio, gfxThreadFunction fn, void *param); +gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param); +threadreturn_t gfxThreadWait(gfxThreadHandle thread); #ifdef __cplusplus } |