2 * FreeRTOS Kernel V11.2.0
3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
5 * SPDX-License-Identifier: MIT
7 * Permission is hereby granted, free of charge, to any person obtaining a copy of
8 * this software and associated documentation files (the "Software"), to deal in
9 * the Software without restriction, including without limitation the rights to
10 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
11 * the Software, and to permit persons to whom the Software is furnished to do so,
12 * subject to the following conditions:
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
19 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
20 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
21 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
22 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24 * https://www.FreeRTOS.org
25 * https://github.com/FreeRTOS
30 * When the MPU is used the standard (non MPU) API functions are mapped to
31 * equivalents that start "MPU_", the prototypes for which are defined in this
32 * header files. This will cause the application code to call the MPU_ version
33 * which wraps the non-MPU version with privilege promoting then demoting code,
34 * so the kernel code always runs will full privileges.
38 #ifndef MPU_PROTOTYPES_H
39 #define MPU_PROTOTYPES_H
41 typedef struct xTaskGenericNotifyParams
43 TaskHandle_t xTaskToNotify;
44 UBaseType_t uxIndexToNotify;
46 eNotifyAction eAction;
47 uint32_t * pulPreviousNotificationValue;
48 } xTaskGenericNotifyParams_t;
50 typedef struct xTaskGenericNotifyWaitParams
52 UBaseType_t uxIndexToWaitOn;
53 uint32_t ulBitsToClearOnEntry;
54 uint32_t ulBitsToClearOnExit;
55 uint32_t * pulNotificationValue;
56 TickType_t xTicksToWait;
57 } xTaskGenericNotifyWaitParams_t;
59 typedef struct xTimerGenericCommandFromTaskParams
62 BaseType_t xCommandID;
63 TickType_t xOptionalValue;
64 BaseType_t * pxHigherPriorityTaskWoken;
65 TickType_t xTicksToWait;
66 } xTimerGenericCommandFromTaskParams_t;
68 typedef struct xEventGroupWaitBitsParams
70 EventGroupHandle_t xEventGroup;
71 EventBits_t uxBitsToWaitFor;
72 BaseType_t xClearOnExit;
73 BaseType_t xWaitForAllBits;
74 TickType_t xTicksToWait;
75 } xEventGroupWaitBitsParams_t;
77 /* MPU versions of task.h API functions. */
78 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
79 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
80 const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL;
81 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
82 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
83 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
84 void MPU_vTaskGetInfo( TaskHandle_t xTask,
85 TaskStatus_t * pxTaskStatus,
86 BaseType_t xGetFreeStackSpace,
87 eTaskState eState ) FREERTOS_SYSTEM_CALL;
88 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL;
89 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL;
90 TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL;
91 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL;
92 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
93 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
94 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
95 TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;
96 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
97 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
99 void * pvValue ) FREERTOS_SYSTEM_CALL;
100 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
101 BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;
102 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;
103 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
104 const UBaseType_t uxArraySize,
105 configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;
106 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
107 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
108 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;
109 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) FREERTOS_SYSTEM_CALL;
110 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
111 UBaseType_t uxIndexToNotify,
113 eNotifyAction eAction,
114 uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
115 BaseType_t MPU_xTaskGenericNotifyEntry( const xTaskGenericNotifyParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
116 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
117 uint32_t ulBitsToClearOnEntry,
118 uint32_t ulBitsToClearOnExit,
119 uint32_t * pulNotificationValue,
120 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
121 BaseType_t MPU_xTaskGenericNotifyWaitEntry( const xTaskGenericNotifyWaitParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
122 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
123 BaseType_t xClearCountOnExit,
124 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
125 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
126 UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL;
127 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
128 UBaseType_t uxIndexToClear,
129 uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;
130 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;
131 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
132 TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;
133 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;
134 BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;
136 /* Privileged only wrappers for Task APIs. These are needed so that
137 * the application can use opaque handles maintained in mpu_wrappers.c
138 * with all the APIs. */
139 #if ( configUSE_MPU_WRAPPERS_V1 == 1 )
141 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
142 const char * const pcName,
143 const configSTACK_DEPTH_TYPE uxStackDepth,
144 void * const pvParameters,
145 UBaseType_t uxPriority,
146 TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL;
147 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
148 const char * const pcName,
149 const configSTACK_DEPTH_TYPE uxStackDepth,
150 void * const pvParameters,
151 UBaseType_t uxPriority,
152 StackType_t * const puxStackBuffer,
153 StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL;
154 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL;
155 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
156 UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL;
157 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) FREERTOS_SYSTEM_CALL;
158 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
159 void * pvParameter ) FREERTOS_SYSTEM_CALL;
160 void MPU_vTaskGetRunTimeStatistics( char * pcWriteBuffer,
161 size_t uxBufferLength ) FREERTOS_SYSTEM_CALL;
162 void MPU_vTaskListTasks( char * pcWriteBuffer,
163 size_t uxBufferLength ) FREERTOS_SYSTEM_CALL;
164 void MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL;
165 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL;
166 BaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL;
168 #else /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
170 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
171 const char * const pcName,
172 const configSTACK_DEPTH_TYPE uxStackDepth,
173 void * const pvParameters,
174 UBaseType_t uxPriority,
175 TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;
176 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
177 const char * const pcName,
178 const configSTACK_DEPTH_TYPE uxStackDepth,
179 void * const pvParameters,
180 UBaseType_t uxPriority,
181 StackType_t * const puxStackBuffer,
182 StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION;
183 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
184 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
185 UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION;
186 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION;
187 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
188 void * pvParameter ) PRIVILEGED_FUNCTION;
190 #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
192 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION;
193 BaseType_t MPU_xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition,
194 TaskHandle_t * pxCreatedTask ) PRIVILEGED_FUNCTION;
195 BaseType_t MPU_xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition,
196 TaskHandle_t * pxCreatedTask ) PRIVILEGED_FUNCTION;
197 void MPU_vTaskAllocateMPURegions( TaskHandle_t xTaskToModify,
198 const MemoryRegion_t * const xRegions ) PRIVILEGED_FUNCTION;
199 BaseType_t MPU_xTaskGetStaticBuffers( TaskHandle_t xTask,
200 StackType_t ** ppuxStackBuffer,
201 StaticTask_t ** ppxTaskBuffer ) PRIVILEGED_FUNCTION;
202 UBaseType_t MPU_uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
203 UBaseType_t MPU_uxTaskBasePriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
204 UBaseType_t MPU_uxTaskBasePriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
205 BaseType_t MPU_xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
206 TaskHookFunction_t MPU_xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
207 BaseType_t MPU_xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
208 UBaseType_t uxIndexToNotify,
210 eNotifyAction eAction,
211 uint32_t * pulPreviousNotificationValue,
212 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
213 void MPU_vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
214 UBaseType_t uxIndexToNotify,
215 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
217 /* MPU versions of queue.h API functions. */
218 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
219 const void * const pvItemToQueue,
220 TickType_t xTicksToWait,
221 const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;
222 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue,
223 void * const pvBuffer,
224 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
225 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
226 void * const pvBuffer,
227 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
228 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
229 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
230 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
231 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
232 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;
233 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
234 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
235 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;
236 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
237 const char * pcName ) FREERTOS_SYSTEM_CALL;
238 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
239 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
240 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
241 QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
242 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
243 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
244 void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue,
245 UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL;
246 UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
247 uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
249 /* Privileged only wrappers for Queue APIs. These are needed so that
250 * the application can use opaque handles maintained in mpu_wrappers.c
251 * with all the APIs. */
252 #if ( configUSE_MPU_WRAPPERS_V1 == 1 )
254 void MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
255 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
256 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
257 StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
258 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
259 const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL;
260 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
261 const UBaseType_t uxInitialCount,
262 StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
263 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
264 const UBaseType_t uxItemSize,
265 const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
266 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
267 const UBaseType_t uxItemSize,
268 uint8_t * pucQueueStorage,
269 StaticQueue_t * pxStaticQueue,
270 const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
271 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL;
272 QueueSetHandle_t MPU_xQueueCreateSetStatic( const UBaseType_t uxEventQueueLength,
273 uint8_t * pucQueueStorage,
274 StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
275 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
276 QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
277 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
278 BaseType_t xNewQueue ) FREERTOS_SYSTEM_CALL;
280 #else /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
282 void MPU_vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
283 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
284 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
285 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
286 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
287 const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
288 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
289 const UBaseType_t uxInitialCount,
290 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
291 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
292 const UBaseType_t uxItemSize,
293 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
294 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
295 const UBaseType_t uxItemSize,
296 uint8_t * pucQueueStorage,
297 StaticQueue_t * pxStaticQueue,
298 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
299 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
300 QueueSetHandle_t MPU_xQueueCreateSetStatic( const UBaseType_t uxEventQueueLength,
301 uint8_t * pucQueueStorage,
302 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
303 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
304 QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
305 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
306 BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
308 #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
310 BaseType_t MPU_xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
311 uint8_t ** ppucQueueStorage,
312 StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
313 BaseType_t MPU_xQueueGenericSendFromISR( QueueHandle_t xQueue,
314 const void * const pvItemToQueue,
315 BaseType_t * const pxHigherPriorityTaskWoken,
316 const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
317 BaseType_t MPU_xQueueGiveFromISR( QueueHandle_t xQueue,
318 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
319 BaseType_t MPU_xQueuePeekFromISR( QueueHandle_t xQueue,
320 void * const pvBuffer ) PRIVILEGED_FUNCTION;
321 BaseType_t MPU_xQueueReceiveFromISR( QueueHandle_t xQueue,
322 void * const pvBuffer,
323 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
324 BaseType_t MPU_xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
325 BaseType_t MPU_xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
326 UBaseType_t MPU_uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
327 TaskHandle_t MPU_xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
328 QueueSetMemberHandle_t MPU_xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
330 /* MPU versions of timers.h API functions. */
331 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
332 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
333 void * pvNewID ) FREERTOS_SYSTEM_CALL;
334 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
335 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
336 BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
337 const BaseType_t xCommandID,
338 const TickType_t xOptionalValue,
339 BaseType_t * const pxHigherPriorityTaskWoken,
340 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
341 BaseType_t MPU_xTimerGenericCommandFromTaskEntry( const xTimerGenericCommandFromTaskParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
342 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
343 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
344 const BaseType_t xAutoReload ) FREERTOS_SYSTEM_CALL;
345 BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
346 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
347 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
348 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
350 /* Privileged only wrappers for Timer APIs. These are needed so that
351 * the application can use opaque handles maintained in mpu_wrappers.c
352 * with all the APIs. */
353 TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName,
354 const TickType_t xTimerPeriodInTicks,
355 const BaseType_t xAutoReload,
356 void * const pvTimerID,
357 TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION;
358 TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
359 const TickType_t xTimerPeriodInTicks,
360 const BaseType_t xAutoReload,
361 void * const pvTimerID,
362 TimerCallbackFunction_t pxCallbackFunction,
363 StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION;
364 BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer,
365 StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
366 BaseType_t MPU_xTimerGenericCommandFromISR( TimerHandle_t xTimer,
367 const BaseType_t xCommandID,
368 const TickType_t xOptionalValue,
369 BaseType_t * const pxHigherPriorityTaskWoken,
370 const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
372 /* MPU versions of event_group.h API functions. */
373 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
374 const EventBits_t uxBitsToWaitFor,
375 const BaseType_t xClearOnExit,
376 const BaseType_t xWaitForAllBits,
377 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
378 EventBits_t MPU_xEventGroupWaitBitsEntry( const xEventGroupWaitBitsParams_t * pxParams ) FREERTOS_SYSTEM_CALL;
379 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
380 const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
381 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
382 const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;
383 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
384 const EventBits_t uxBitsToSet,
385 const EventBits_t uxBitsToWaitFor,
386 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
387 #if ( configUSE_TRACE_FACILITY == 1 )
388 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL;
389 void MPU_vEventGroupSetNumber( void * xEventGroup,
390 UBaseType_t uxEventGroupNumber ) FREERTOS_SYSTEM_CALL;
391 #endif /* #if ( configUSE_TRACE_FACILITY == 1 ) */
393 /* Privileged only wrappers for Event Group APIs. These are needed so that
394 * the application can use opaque handles maintained in mpu_wrappers.c
395 * with all the APIs. */
396 #if ( configUSE_MPU_WRAPPERS_V1 == 1 )
398 EventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL;
399 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL;
400 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL;
402 #else /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
404 EventGroupHandle_t MPU_xEventGroupCreate( void ) PRIVILEGED_FUNCTION;
405 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) PRIVILEGED_FUNCTION;
406 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
408 #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
410 BaseType_t MPU_xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
411 StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
412 BaseType_t MPU_xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup,
413 const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
414 BaseType_t MPU_xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup,
415 const EventBits_t uxBitsToSet,
416 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
417 EventBits_t MPU_xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
419 /* MPU versions of message/stream_buffer.h API functions. */
420 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
421 const void * pvTxData,
422 size_t xDataLengthBytes,
423 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
424 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
426 size_t xBufferLengthBytes,
427 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
428 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
429 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
430 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
431 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
432 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
433 size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;
434 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
436 /* Privileged only wrappers for Stream Buffer APIs. These are needed so that
437 * the application can use opaque handles maintained in mpu_wrappers.c
438 * with all the APIs. */
439 #if ( configUSE_MPU_WRAPPERS_V1 == 1 )
441 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
442 size_t xTriggerLevelBytes,
443 BaseType_t xStreamBufferType,
444 StreamBufferCallbackFunction_t pxSendCompletedCallback,
445 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) FREERTOS_SYSTEM_CALL;
446 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
447 size_t xTriggerLevelBytes,
448 BaseType_t xStreamBufferType,
449 uint8_t * const pucStreamBufferStorageArea,
450 StaticStreamBuffer_t * const pxStaticStreamBuffer,
451 StreamBufferCallbackFunction_t pxSendCompletedCallback,
452 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) FREERTOS_SYSTEM_CALL;
453 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
454 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
456 #else /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
458 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
459 size_t xTriggerLevelBytes,
460 BaseType_t xStreamBufferType,
461 StreamBufferCallbackFunction_t pxSendCompletedCallback,
462 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
463 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
464 size_t xTriggerLevelBytes,
465 BaseType_t xStreamBufferType,
466 uint8_t * const pucStreamBufferStorageArea,
467 StaticStreamBuffer_t * const pxStaticStreamBuffer,
468 StreamBufferCallbackFunction_t pxSendCompletedCallback,
469 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
470 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
471 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
473 #endif /* #if ( configUSE_MPU_WRAPPERS_V1 == 1 ) */
475 BaseType_t MPU_xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffers,
476 uint8_t * ppucStreamBufferStorageArea,
477 StaticStreamBuffer_t * ppxStaticStreamBuffer ) PRIVILEGED_FUNCTION;
478 size_t MPU_xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
479 const void * pvTxData,
480 size_t xDataLengthBytes,
481 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
482 size_t MPU_xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
484 size_t xBufferLengthBytes,
485 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
486 BaseType_t MPU_xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
487 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
488 BaseType_t MPU_xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
489 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
490 BaseType_t MPU_xStreamBufferResetFromISR( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
492 #endif /* MPU_PROTOTYPES_H */