2 * FreeRTOS Kernel V10.3.0
\r
3 * Copyright (C) 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.
\r
5 * Permission is hereby granted, free of charge, to any person obtaining a copy of
\r
6 * this software and associated documentation files (the "Software"), to deal in
\r
7 * the Software without restriction, including without limitation the rights to
\r
8 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
\r
9 * the Software, and to permit persons to whom the Software is furnished to do so,
\r
10 * subject to the following conditions:
\r
12 * The above copyright notice and this permission notice shall be included in all
\r
13 * copies or substantial portions of the Software.
\r
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
\r
16 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
\r
17 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
\r
18 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
\r
19 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
\r
20 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
\r
22 * http://www.FreeRTOS.org
\r
23 * http://aws.amazon.com/freertos
\r
25 * 1 tab == 4 spaces!
\r
28 #ifndef MPU_WRAPPERS_H
\r
29 #define MPU_WRAPPERS_H
\r
31 /* This file redefines API functions to be called through a wrapper macro, but
\r
32 only for ports that are using the MPU. */
\r
33 #ifdef portUSING_MPU_WRAPPERS
\r
35 /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is
\r
36 included from queue.c or task.c to prevent it from having an effect within
\r
38 #ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
\r
41 * Map standard (non MPU) API functions to equivalents that start
\r
42 * "MPU_". This will cause the application code to call the MPU_
\r
43 * version, which wraps the non-MPU version with privilege promoting
\r
44 * then demoting code, so the kernel code always runs will full
\r
48 /* Map standard tasks.h API functions to the MPU equivalents. */
\r
49 #define xTaskCreate MPU_xTaskCreate
\r
50 #define xTaskCreateStatic MPU_xTaskCreateStatic
\r
51 #define xTaskCreateRestricted MPU_xTaskCreateRestricted
\r
52 #define vTaskAllocateMPURegions MPU_vTaskAllocateMPURegions
\r
53 #define vTaskDelete MPU_vTaskDelete
\r
54 #define vTaskDelay MPU_vTaskDelay
\r
55 #define vTaskDelayUntil MPU_vTaskDelayUntil
\r
56 #define xTaskAbortDelay MPU_xTaskAbortDelay
\r
57 #define uxTaskPriorityGet MPU_uxTaskPriorityGet
\r
58 #define eTaskGetState MPU_eTaskGetState
\r
59 #define vTaskGetInfo MPU_vTaskGetInfo
\r
60 #define vTaskPrioritySet MPU_vTaskPrioritySet
\r
61 #define vTaskSuspend MPU_vTaskSuspend
\r
62 #define vTaskResume MPU_vTaskResume
\r
63 #define vTaskSuspendAll MPU_vTaskSuspendAll
\r
64 #define xTaskResumeAll MPU_xTaskResumeAll
\r
65 #define xTaskGetTickCount MPU_xTaskGetTickCount
\r
66 #define uxTaskGetNumberOfTasks MPU_uxTaskGetNumberOfTasks
\r
67 #define pcTaskGetName MPU_pcTaskGetName
\r
68 #define xTaskGetHandle MPU_xTaskGetHandle
\r
69 #define uxTaskGetStackHighWaterMark MPU_uxTaskGetStackHighWaterMark
\r
70 #define uxTaskGetStackHighWaterMark2 MPU_uxTaskGetStackHighWaterMark2
\r
71 #define vTaskSetApplicationTaskTag MPU_vTaskSetApplicationTaskTag
\r
72 #define xTaskGetApplicationTaskTag MPU_xTaskGetApplicationTaskTag
\r
73 #define vTaskSetThreadLocalStoragePointer MPU_vTaskSetThreadLocalStoragePointer
\r
74 #define pvTaskGetThreadLocalStoragePointer MPU_pvTaskGetThreadLocalStoragePointer
\r
75 #define xTaskCallApplicationTaskHook MPU_xTaskCallApplicationTaskHook
\r
76 #define xTaskGetIdleTaskHandle MPU_xTaskGetIdleTaskHandle
\r
77 #define uxTaskGetSystemState MPU_uxTaskGetSystemState
\r
78 #define vTaskList MPU_vTaskList
\r
79 #define vTaskGetRunTimeStats MPU_vTaskGetRunTimeStats
\r
80 #define ulTaskGetIdleRunTimeCounter MPU_ulTaskGetIdleRunTimeCounter
\r
81 #define xTaskGenericNotify MPU_xTaskGenericNotify
\r
82 #define xTaskNotifyWait MPU_xTaskNotifyWait
\r
83 #define ulTaskNotifyTake MPU_ulTaskNotifyTake
\r
84 #define xTaskNotifyStateClear MPU_xTaskNotifyStateClear
\r
85 #define ulTaskNotifyValueClear MPU_ulTaskNotifyValueClear
\r
86 #define xTaskCatchUpTicks MPU_xTaskCatchUpTicks
\r
88 #define xTaskGetCurrentTaskHandle MPU_xTaskGetCurrentTaskHandle
\r
89 #define vTaskSetTimeOutState MPU_vTaskSetTimeOutState
\r
90 #define xTaskCheckForTimeOut MPU_xTaskCheckForTimeOut
\r
91 #define xTaskGetSchedulerState MPU_xTaskGetSchedulerState
\r
93 /* Map standard queue.h API functions to the MPU equivalents. */
\r
94 #define xQueueGenericSend MPU_xQueueGenericSend
\r
95 #define xQueueReceive MPU_xQueueReceive
\r
96 #define xQueuePeek MPU_xQueuePeek
\r
97 #define xQueueSemaphoreTake MPU_xQueueSemaphoreTake
\r
98 #define uxQueueMessagesWaiting MPU_uxQueueMessagesWaiting
\r
99 #define uxQueueSpacesAvailable MPU_uxQueueSpacesAvailable
\r
100 #define vQueueDelete MPU_vQueueDelete
\r
101 #define xQueueCreateMutex MPU_xQueueCreateMutex
\r
102 #define xQueueCreateMutexStatic MPU_xQueueCreateMutexStatic
\r
103 #define xQueueCreateCountingSemaphore MPU_xQueueCreateCountingSemaphore
\r
104 #define xQueueCreateCountingSemaphoreStatic MPU_xQueueCreateCountingSemaphoreStatic
\r
105 #define xQueueGetMutexHolder MPU_xQueueGetMutexHolder
\r
106 #define xQueueTakeMutexRecursive MPU_xQueueTakeMutexRecursive
\r
107 #define xQueueGiveMutexRecursive MPU_xQueueGiveMutexRecursive
\r
108 #define xQueueGenericCreate MPU_xQueueGenericCreate
\r
109 #define xQueueGenericCreateStatic MPU_xQueueGenericCreateStatic
\r
110 #define xQueueCreateSet MPU_xQueueCreateSet
\r
111 #define xQueueAddToSet MPU_xQueueAddToSet
\r
112 #define xQueueRemoveFromSet MPU_xQueueRemoveFromSet
\r
113 #define xQueueSelectFromSet MPU_xQueueSelectFromSet
\r
114 #define xQueueGenericReset MPU_xQueueGenericReset
\r
116 #if( configQUEUE_REGISTRY_SIZE > 0 )
\r
117 #define vQueueAddToRegistry MPU_vQueueAddToRegistry
\r
118 #define vQueueUnregisterQueue MPU_vQueueUnregisterQueue
\r
119 #define pcQueueGetName MPU_pcQueueGetName
\r
122 /* Map standard timer.h API functions to the MPU equivalents. */
\r
123 #define xTimerCreate MPU_xTimerCreate
\r
124 #define xTimerCreateStatic MPU_xTimerCreateStatic
\r
125 #define pvTimerGetTimerID MPU_pvTimerGetTimerID
\r
126 #define vTimerSetTimerID MPU_vTimerSetTimerID
\r
127 #define xTimerIsTimerActive MPU_xTimerIsTimerActive
\r
128 #define xTimerGetTimerDaemonTaskHandle MPU_xTimerGetTimerDaemonTaskHandle
\r
129 #define xTimerPendFunctionCall MPU_xTimerPendFunctionCall
\r
130 #define pcTimerGetName MPU_pcTimerGetName
\r
131 #define vTimerSetReloadMode MPU_vTimerSetReloadMode
\r
132 #define uxTimerGetReloadMode MPU_uxTimerGetReloadMode
\r
133 #define xTimerGetPeriod MPU_xTimerGetPeriod
\r
134 #define xTimerGetExpiryTime MPU_xTimerGetExpiryTime
\r
135 #define xTimerGenericCommand MPU_xTimerGenericCommand
\r
137 /* Map standard event_group.h API functions to the MPU equivalents. */
\r
138 #define xEventGroupCreate MPU_xEventGroupCreate
\r
139 #define xEventGroupCreateStatic MPU_xEventGroupCreateStatic
\r
140 #define xEventGroupWaitBits MPU_xEventGroupWaitBits
\r
141 #define xEventGroupClearBits MPU_xEventGroupClearBits
\r
142 #define xEventGroupSetBits MPU_xEventGroupSetBits
\r
143 #define xEventGroupSync MPU_xEventGroupSync
\r
144 #define vEventGroupDelete MPU_vEventGroupDelete
\r
146 /* Map standard message/stream_buffer.h API functions to the MPU
\r
148 #define xStreamBufferSend MPU_xStreamBufferSend
\r
149 #define xStreamBufferReceive MPU_xStreamBufferReceive
\r
150 #define xStreamBufferNextMessageLengthBytes MPU_xStreamBufferNextMessageLengthBytes
\r
151 #define vStreamBufferDelete MPU_vStreamBufferDelete
\r
152 #define xStreamBufferIsFull MPU_xStreamBufferIsFull
\r
153 #define xStreamBufferIsEmpty MPU_xStreamBufferIsEmpty
\r
154 #define xStreamBufferReset MPU_xStreamBufferReset
\r
155 #define xStreamBufferSpacesAvailable MPU_xStreamBufferSpacesAvailable
\r
156 #define xStreamBufferBytesAvailable MPU_xStreamBufferBytesAvailable
\r
157 #define xStreamBufferSetTriggerLevel MPU_xStreamBufferSetTriggerLevel
\r
158 #define xStreamBufferGenericCreate MPU_xStreamBufferGenericCreate
\r
159 #define xStreamBufferGenericCreateStatic MPU_xStreamBufferGenericCreateStatic
\r
162 /* Remove the privileged function macro, but keep the PRIVILEGED_DATA
\r
163 macro so applications can place data in privileged access sections
\r
164 (useful when using statically allocated objects). */
\r
165 #define PRIVILEGED_FUNCTION
\r
166 #define PRIVILEGED_DATA __attribute__((section("privileged_data")))
\r
167 #define FREERTOS_SYSTEM_CALL
\r
169 #else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
\r
171 /* Ensure API functions go in the privileged execution section. */
\r
172 #define PRIVILEGED_FUNCTION __attribute__((section("privileged_functions")))
\r
173 #define PRIVILEGED_DATA __attribute__((section("privileged_data")))
\r
174 #define FREERTOS_SYSTEM_CALL __attribute__((section( "freertos_system_calls")))
\r
176 #endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
\r
178 #else /* portUSING_MPU_WRAPPERS */
\r
180 #define PRIVILEGED_FUNCTION
\r
181 #define PRIVILEGED_DATA
\r
182 #define FREERTOS_SYSTEM_CALL
\r
183 #define portUSING_MPU_WRAPPERS 0
\r
185 #endif /* portUSING_MPU_WRAPPERS */
\r
188 #endif /* MPU_WRAPPERS_H */
\r