13 #ifndef _GOS_FREERTOS_H
14 #define _GOS_FREERTOS_H
16 #if GFX_USE_OS_FREERTOS
19 #include "FreeRTOSConfig.h"
28 #define gDelayForever ((gDelay)-1)
30 typedef portTickType gTicks;
31 typedef gI32 gSemcount;
32 typedef void gThreadreturn;
33 typedef portBASE_TYPE gThreadpriority;
35 #define gSemMaxCount ((gSemcount)(((unsigned long)((gSemcount)(-1))) >> 1))
36 #define gThreadpriorityLow 0
37 #define gThreadpriorityNormal configMAX_PRIORITIES/2
38 #define gThreadpriorityHigh configMAX_PRIORITIES-1
41 #define GFX_THREAD_STACK(name, sz) gU8 name[1]
42 #define GFX_THREAD_FUNCTION(fnName, param) gThreadreturn fnName(void *param)
43 #define gfxThreadReturn(retval) return
45 typedef xSemaphoreHandle
gSem;
46 typedef xSemaphoreHandle
gMutex;
53 #define gfxHalt(msg) {while(1);}
54 #define gfxExit() {while(1);}
55 #define gfxAlloc(sz) pvPortMalloc(sz)
56 #define gfxFree(ptr) vPortFree(ptr)
57 #define gfxYield() taskYIELD()
58 #define gfxSystemTicks() xTaskGetTickCount()
59 #define gfxMillisecondsToTicks(ms) ((gTicks)((ms) / portTICK_PERIOD_MS))
60 #define gfxSystemLock() taskENTER_CRITICAL()
61 #define gfxSystemUnlock() taskEXIT_CRITICAL()
64 #define gfxMutexDestroy(pmutex) vSemaphoreDelete(*(pmutex))
65 #define gfxMutexEnter(pmutex) xSemaphoreTake(*(pmutex),portMAX_DELAY)
66 #define gfxMutexExit(pmutex) xSemaphoreGive(*(pmutex))
68 void *
gfxRealloc(
void *ptr, gMemSize oldsz, gMemSize newsz);
73 #define gfxSemDestroy(psem) vSemaphoreDelete(*(psem))
80 #define gfxThreadMe() xTaskGetCurrentTaskHandle()
81 #if INCLUDE_eTaskGetState == 1
84 #define gfxThreadClose(thread)
gThreadreturn gfxThreadWait(gThread thread)
Wait for a thread to finish.
void gfxSemSignal(gSem *psem)
Signal a semaphore.
void * gThread
A thread handle.
#define GFX_THREAD_FUNCTION(fnName, param)
Declare a thread function.
gBool gfxSemWait(gSem *psem, gDelay ms)
Wait on a semaphore.
void gfxSleepMicroseconds(gDelay us)
Put the current thread to sleep for the specified period in microseconds.
void gfxMutexInit(gMutex *pmutex)
Initialise a mutex to protect a region of code from other threads.
gThread gfxThreadCreate(void *stackarea, gMemSize stacksz, gThreadpriority prio, GFX_THREAD_FUNCTION((*fn), p), void *param)
Start a new thread.
gBool gfxSemWaitI(gSem *psem)
Test if a wait on a semaphore can be satisfied immediately.
void gfxSemInit(gSem *psem, gSemcount val, gSemcount limit)
Initialise a Counted Semaphore.
void * gfxRealloc(void *ptr, gMemSize oldsz, gMemSize newsz)
Re-allocate memory.
void gfxSemSignalI(gSem *psem)
Signal a semaphore.
void gfxSleepMilliseconds(gDelay ms)
Put the current thread to sleep for the specified period in milliseconds.