aboutsummaryrefslogtreecommitdiffstats
path: root/src/gos/gos_raw32.h
diff options
context:
space:
mode:
authorinmarket <andrewh@inmarket.com.au>2015-07-16 19:02:59 +1000
committerinmarket <andrewh@inmarket.com.au>2015-07-16 19:02:59 +1000
commitc1d239bbdaef9ae08948ad2b61510ac1cd240947 (patch)
treee7fbe4bc48b618f1f54227ae9dc46d6172a384b1 /src/gos/gos_raw32.h
parentb3028a78d15a325eee1ec9563047637908cab8f5 (diff)
downloaduGFX-c1d239bbdaef9ae08948ad2b61510ac1cd240947.tar.gz
uGFX-c1d239bbdaef9ae08948ad2b61510ac1cd240947.tar.bz2
uGFX-c1d239bbdaef9ae08948ad2b61510ac1cd240947.zip
Significant improvements in alternative scheduler.
Isolate the generic thread and heap code Tidyup's. Generic threading now working for x86, cortex-m0->m7.
Diffstat (limited to 'src/gos/gos_raw32.h')
-rw-r--r--src/gos/gos_raw32.h96
1 files changed, 10 insertions, 86 deletions
diff --git a/src/gos/gos_raw32.h b/src/gos/gos_raw32.h
index 0661bd37..0fca9223 100644
--- a/src/gos/gos_raw32.h
+++ b/src/gos/gos_raw32.h
@@ -26,37 +26,6 @@
#if GFX_USE_OS_RAW32
/*===========================================================================*/
-/* Special Macros just for a Raw implementation */
-/*===========================================================================*/
-
-/**
- * @brief Set the maximum size of the heap.
- * @note If set to 0 then the C runtime library malloc() and free() are used.
- */
-#ifndef GOS_RAW_HEAP_SIZE
- #define GOS_RAW_HEAP_SIZE 0
-#endif
-
-/**
- * @brief Scheduler cpu support
- */
-#define SCHED_USE_SETJMP 0
-#define SCHED_USE_CORTEX_M0 1
-#define SCHED_USE_CORTEX_M1 2
-#define SCHED_USE_CORTEX_M2 3
-#define SCHED_USE_CORTEX_M3 4
-#define SCHED_USE_CORTEX_M4 5
-
-/**
- * @brief Set the preferred scheduler method
- * @note If not defined the SCHED_USE_SETJMP is used which should work for most platforms.
- */
-#ifndef GOS_RAW_SCHEDULER
- #define GOS_RAW_SCHEDULER SCHED_USE_SETJMP
-#endif
-
-
-/*===========================================================================*/
/* Type definitions */
/*===========================================================================*/
@@ -79,71 +48,26 @@ typedef unsigned char bool_t;
typedef uint32_t size_t;
#endif
-typedef uint32_t delaytime_t;
-typedef uint32_t systemticks_t;
-typedef short semcount_t;
-typedef int threadreturn_t;
-typedef int threadpriority_t;
-
-#define DECLARE_THREAD_FUNCTION(fnName, param) threadreturn_t fnName(void *param)
-#define DECLARE_THREAD_STACK(name, sz) uint8_t name[sz];
-
-#define TIME_IMMEDIATE 0
-#define TIME_INFINITE ((delaytime_t)-1)
-#define MAX_SEMAPHORE_COUNT 0x7FFF
-#define LOW_PRIORITY 0
-#define NORMAL_PRIORITY 1
-#define HIGH_PRIORITY 2
-
-typedef struct {
- semcount_t cnt;
- semcount_t limit;
-} gfxSem;
-
-typedef uint32_t gfxMutex;
-typedef void * gfxThreadHandle;
-
-#define gfxThreadClose(thread)
-#define gfxMutexDestroy(pmutex)
-#define gfxSemDestroy(psem)
-#define gfxSemCounter(psem) ((psem)->cnt)
-#define gfxSemCounterI(psem) ((psem)->cnt)
-
#ifdef __cplusplus
extern "C" {
#endif
- #if GOS_RAW_HEAP_SIZE != 0
- void gfxAddHeapBlock(void *ptr, size_t sz);
- #endif
-
void gfxHalt(const char *msg);
void gfxExit(void);
- void *gfxAlloc(size_t sz);
- void *gfxRealloc(void *ptr, size_t oldsz, size_t newsz);
- void gfxFree(void *ptr);
- void gfxYield(void);
- void gfxSleepMilliseconds(delaytime_t ms);
- void gfxSleepMicroseconds(delaytime_t ms);
- systemticks_t gfxSystemTicks(void);
- systemticks_t gfxMillisecondsToTicks(delaytime_t ms);
- void gfxSystemLock(void);
- void gfxSystemUnlock(void);
- void gfxMutexInit(gfxMutex *pmutex);
- void gfxMutexEnter(gfxMutex *pmutex);
- void gfxMutexExit(gfxMutex *pmutex);
- void gfxSemInit(gfxSem *psem, semcount_t val, semcount_t limit);
- bool_t gfxSemWait(gfxSem *psem, delaytime_t ms);
- bool_t gfxSemWaitI(gfxSem *psem);
- void gfxSemSignal(gfxSem *psem);
- void gfxSemSignalI(gfxSem *psem);
- gfxThreadHandle gfxThreadCreate(void *stackarea, size_t stacksz, threadpriority_t prio, DECLARE_THREAD_FUNCTION((*fn),p), void *param);
- threadreturn_t gfxThreadWait(gfxThreadHandle thread);
- gfxThreadHandle gfxThreadMe(void);
#ifdef __cplusplus
}
#endif
+/*===========================================================================*/
+/* Use the generic thread handling and heap handling */
+/*===========================================================================*/
+
+#define GOS_NEED_X_THREADS TRUE
+#define GOS_NEED_X_HEAP TRUE
+
+#include "gos_x_threads.h"
+#include "gos_x_heap.h"
+
#endif /* GFX_USE_OS_RAW32 */
#endif /* _GOS_RAW32_H */