µGFX  2.9
version 2.9
gos_freertos.h
Go to the documentation of this file.
1 /*
2  * This file is subject to the terms of the GFX License. If a copy of
3  * the license was not distributed with this file, you can obtain one at:
4  *
5  * http://ugfx.io/license.html
6  */
7 
8 /**
9  * @file src/gos/gos_freertos.h
10  * @brief GOS - Operating System Support header file for FreeRTOS.
11  */
12 
13 #ifndef _GOS_FREERTOS_H
14 #define _GOS_FREERTOS_H
15 
16 #if GFX_USE_OS_FREERTOS
17 
18 #include "FreeRTOS.h"
19 #include "FreeRTOSConfig.h"
20 #include "semphr.h"
21 #include "task.h"
22 
23 /*===========================================================================*/
24 /* Type definitions */
25 /*===========================================================================*/
26 
27 #define gDelayNone 0
28 #define gDelayForever ((gDelay)-1)
29 typedef gU32 gDelay;
30 typedef portTickType gTicks;
31 typedef gI32 gSemcount;
32 typedef void gThreadreturn;
33 typedef portBASE_TYPE gThreadpriority;
34 
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
39 
40 /* FreeRTOS will allocate the stack when creating the thread */
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
44 
45 typedef xSemaphoreHandle gSem;
46 typedef xSemaphoreHandle gMutex;
47 typedef xTaskHandle gThread;
48 
49 /*===========================================================================*/
50 /* Function declarations. */
51 /*===========================================================================*/
52 
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()
62 
63 void gfxMutexInit(gMutex* s);
64 #define gfxMutexDestroy(pmutex) vSemaphoreDelete(*(pmutex))
65 #define gfxMutexEnter(pmutex) xSemaphoreTake(*(pmutex),portMAX_DELAY)
66 #define gfxMutexExit(pmutex) xSemaphoreGive(*(pmutex))
67 
68 void *gfxRealloc(void *ptr, gMemSize oldsz, gMemSize newsz);
69 void gfxSleepMilliseconds(gDelay ms);
70 void gfxSleepMicroseconds(gDelay ms);
71 
72 void gfxSemInit(gSem* psem, gSemcount val, gSemcount limit);
73 #define gfxSemDestroy(psem) vSemaphoreDelete(*(psem))
74 gBool gfxSemWait(gSem* psem, gDelay ms);
75 gBool gfxSemWaitI(gSem* psem);
76 void gfxSemSignal(gSem* psem);
77 void gfxSemSignalI(gSem* psem);
78 gThread gfxThreadCreate(void *stackarea, gMemSize stacksz, gThreadpriority prio, GFX_THREAD_FUNCTION((*fn),p), void *param);
79 
80 #define gfxThreadMe() xTaskGetCurrentTaskHandle()
81 #if INCLUDE_eTaskGetState == 1
82  gThreadreturn gfxThreadWait(gThread thread);
83 #endif
84 #define gfxThreadClose(thread)
85 
86 #endif /* GFX_USE_OS_FREERTOS */
87 #endif /* _GOS_CHIBIOS_H */
gThreadreturn gfxThreadWait(gThread thread)
Wait for a thread to finish.
void gfxSemSignal(gSem *psem)
Signal a semaphore.
void * gThread
A thread handle.
Definition: gos.h:116
#define GFX_THREAD_FUNCTION(fnName, param)
Declare a thread function.
Definition: gos.h:73
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.
A mutex.
Definition: gos.h:110
A semaphore.
Definition: gos.h:104