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