aboutsummaryrefslogtreecommitdiffstats
path: root/include/gos/win32.h
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2013-05-26 02:06:55 +1000
committerinmarket <andrewh@inmarket.com.au>2013-05-26 02:06:55 +1000
commit8fcbf4e5d5cc88d52f4e6e67ebead27fc856ff4a (patch)
treec52d7733525727320d2de00acedb42bc18124471 /include/gos/win32.h
parent7fbfde42aabbcd30cffba2fba35158236c0a6c6c (diff)
downloaduGFX-8fcbf4e5d5cc88d52f4e6e67ebead27fc856ff4a.tar.gz
uGFX-8fcbf4e5d5cc88d52f4e6e67ebead27fc856ff4a.tar.bz2
uGFX-8fcbf4e5d5cc88d52f4e6e67ebead27fc856ff4a.zip
More GOS module changes
GQUEUE as a seperate module GOS changes including basic Win32 O/S support
Diffstat (limited to 'include/gos/win32.h')
-rw-r--r--include/gos/win32.h74
1 files changed, 74 insertions, 0 deletions
diff --git a/include/gos/win32.h b/include/gos/win32.h
index a6f28865..80a1f430 100644
--- a/include/gos/win32.h
+++ b/include/gos/win32.h
@@ -26,6 +26,80 @@
#define _GOS_WIN32_H
#if GFX_USE_OS_WIN32
+
+//#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+
+/**
+ * size_t
+ * TRUE, FALSE
+ * are already defined by Win32
+ */
+typedef __int8 bool_t;
+typedef __int8 int8_t;
+typedef unsigned __int8 uint8_t;
+typedef __int16 int16_t;
+typedef unsigned __int16 uint16_t;
+typedef __int32 int32_t;
+typedef unsigned __int32 uint32_t;
+typedef DWORD delaytime_t;
+typedef DWORD systemticks_t;
+typedef LONG semcount_t;
+#define threadreturn_t DWORD WINAPI
+typedef int threadpriority_t;
+
+typedef threadreturn_t (*gfxThreadFunction)(void *param);
+
+#define TIME_IMMEDIATE 0
+#define TIME_INFINITE INFINITE
+#define MAX_SEMAPHORE_COUNT ((semcount_t)(((unsigned long)((semcount_t)(-1))) >> 1))
+#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;
+
+#define gfxExit() ExitProcess(0)
+#define gfxAlloc(sz) malloc(sz)
+#define gfxFree(ptr) free(ptr)
+#define gfxSleepMilliseconds(ms) Sleep(ms)
+#define gfxYield() Sleep(0)
+#define gfxSystemTicks() GetTickCount()
+#define gfxMillisecondsToTicks(ms) (ms)
+#define gfxMutexInit(pmutex) *(pmutex) = CreateMutex(NULL, FALSE, NULL)
+#define gfxMutexDestory(pmutex) CloseHandle(*(pmutex))
+#define gfxMutexEnter(pmutex) WaitForSingleObject(*(pmutex), INFINITE)
+#define gfxMutexExit(pmutex) ReleaseMutex(*(pmutex))
+#define gfxSemInit(psem, val, limit) *(psem) = CreateSemaphore(NULL, val, limit, NULL)
+#define gfxSemDestory(psem) CloseHandle(*(psem))
+#define gfxSemSignal(psem) ReleaseSemaphore(*(psem), 1, NULL)
+#define gfxSemSignalI(psem) ReleaseSemaphore(*(psem), 1, NULL)
+#define gfxSemCounterI(psem) gfxSemCounter(psem)
+
+/*===========================================================================*/
+/* Function declarations. */
+/*===========================================================================*/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+void gfxHalt(const char *msg);
+void gfxSleepMicroseconds(delaytime_t ms);
+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);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+
#endif /* GFX_USE_OS_WIN32 */
#endif /* _GOS_WIN32_H */