aboutsummaryrefslogtreecommitdiffstats
path: root/include/gos/win32.h
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-06-02 18:57:22 +1000
committerinmarket <andrewh@inmarket.com.au>2013-06-02 18:57:22 +1000
commit1c258a82738e145953fc9cf40c68dcce6db87d92 (patch)
treec151e882619714d696276ce29ef3388dce6e1866 /include/gos/win32.h
parentc2a4f9a5d616f5b18a965652d7492aacd377e5e2 (diff)
downloaduGFX-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.h15
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
}