2 * FreeRTOS Kernel <DEVELOPMENT BRANCH>
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 /* MPU versions of task.h API functions. */
42 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
43 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
44 const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL;
45 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
46 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
47 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
48 void MPU_vTaskGetInfo( TaskHandle_t xTask,
49 TaskStatus_t * pxTaskStatus,
50 BaseType_t xGetFreeStackSpace,
51 eTaskState eState ) FREERTOS_SYSTEM_CALL;
52 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL;
53 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL;
54 TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL;
55 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL;
56 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
57 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
58 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
59 TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;
60 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
61 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
63 void * pvValue ) FREERTOS_SYSTEM_CALL;
64 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
65 BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;
66 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;
67 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
68 const UBaseType_t uxArraySize,
69 configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;
70 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
71 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
72 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;
73 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) FREERTOS_SYSTEM_CALL;
74 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
75 UBaseType_t uxIndexToNotify,
77 eNotifyAction eAction,
78 uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
79 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
80 uint32_t ulBitsToClearOnEntry,
81 uint32_t ulBitsToClearOnExit,
82 uint32_t * pulNotificationValue,
83 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
84 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
85 BaseType_t xClearCountOnExit,
86 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
87 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
88 UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL;
89 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
90 UBaseType_t uxIndexToClear,
91 uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;
92 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;
93 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
94 TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;
95 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;
96 BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;
98 /* Privileged only wrappers for Task APIs. These are needed so that
99 * the application can use opaque handles maintained in mpu_wrappers.c
100 * with all the APIs. */
101 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
102 const char * const pcName,
103 const uint16_t usStackDepth,
104 void * const pvParameters,
105 UBaseType_t uxPriority,
106 TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;
107 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
108 const char * const pcName,
109 const uint32_t ulStackDepth,
110 void * const pvParameters,
111 UBaseType_t uxPriority,
112 StackType_t * const puxStackBuffer,
113 StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION;
114 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
115 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
116 UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION;
117 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION;
118 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
119 void * pvParameter ) PRIVILEGED_FUNCTION;
120 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) PRIVILEGED_FUNCTION;
121 BaseType_t MPU_xTaskCreateRestricted( const TaskParameters_t * const pxTaskDefinition,
122 TaskHandle_t * pxCreatedTask ) PRIVILEGED_FUNCTION;
123 BaseType_t MPU_xTaskCreateRestrictedStatic( const TaskParameters_t * const pxTaskDefinition,
124 TaskHandle_t * pxCreatedTask ) PRIVILEGED_FUNCTION;
125 void MPU_vTaskAllocateMPURegions( TaskHandle_t xTaskToModify,
126 const MemoryRegion_t * const xRegions ) PRIVILEGED_FUNCTION;
127 BaseType_t MPU_xTaskGetStaticBuffers( TaskHandle_t xTask,
128 StackType_t ** ppuxStackBuffer,
129 StaticTask_t ** ppxTaskBuffer ) PRIVILEGED_FUNCTION;
130 UBaseType_t MPU_uxTaskPriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
131 UBaseType_t MPU_uxTaskBasePriorityGet( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
132 UBaseType_t MPU_uxTaskBasePriorityGetFromISR( const TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
133 BaseType_t MPU_xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
134 TaskHookFunction_t MPU_xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
135 BaseType_t MPU_xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
136 UBaseType_t uxIndexToNotify,
138 eNotifyAction eAction,
139 uint32_t * pulPreviousNotificationValue,
140 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
141 void MPU_vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
142 UBaseType_t uxIndexToNotify,
143 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
145 /* MPU versions of queue.h API functions. */
146 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
147 const void * const pvItemToQueue,
148 TickType_t xTicksToWait,
149 const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;
150 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue,
151 void * const pvBuffer,
152 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
153 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
154 void * const pvBuffer,
155 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
156 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
157 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
158 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
159 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
160 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;
161 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
162 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
163 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;
164 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
165 const char * pcName ) FREERTOS_SYSTEM_CALL;
166 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
167 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
168 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
169 QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
170 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
171 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
172 void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue,
173 UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL;
174 UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
175 uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
177 /* Privileged only wrappers for Queue APIs. These are needed so that
178 * the application can use opaque handles maintained in mpu_wrappers.c
179 * with all the APIs. */
180 void MPU_vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
181 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
182 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
183 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
184 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
185 const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
186 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
187 const UBaseType_t uxInitialCount,
188 StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
189 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
190 const UBaseType_t uxItemSize,
191 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
192 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
193 const UBaseType_t uxItemSize,
194 uint8_t * pucQueueStorage,
195 StaticQueue_t * pxStaticQueue,
196 const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
197 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
198 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
199 QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
200 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
201 BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
202 BaseType_t MPU_xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
203 uint8_t ** ppucQueueStorage,
204 StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
205 BaseType_t MPU_xQueueGenericSendFromISR( QueueHandle_t xQueue,
206 const void * const pvItemToQueue,
207 BaseType_t * const pxHigherPriorityTaskWoken,
208 const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
209 BaseType_t MPU_xQueueGiveFromISR( QueueHandle_t xQueue,
210 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
211 BaseType_t MPU_xQueuePeekFromISR( QueueHandle_t xQueue,
212 void * const pvBuffer ) PRIVILEGED_FUNCTION;
213 BaseType_t MPU_xQueueReceiveFromISR( QueueHandle_t xQueue,
214 void * const pvBuffer,
215 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
216 BaseType_t MPU_xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
217 BaseType_t MPU_xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
218 UBaseType_t MPU_uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
219 TaskHandle_t MPU_xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
220 QueueSetMemberHandle_t MPU_xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
222 /* MPU versions of timers.h API functions. */
223 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
224 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
225 void * pvNewID ) FREERTOS_SYSTEM_CALL;
226 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
227 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
228 BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
229 const BaseType_t xCommandID,
230 const TickType_t xOptionalValue,
231 BaseType_t * const pxHigherPriorityTaskWoken,
232 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
233 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
234 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
235 const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
236 BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
237 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
238 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
239 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
241 /* Privileged only wrappers for Timer APIs. These are needed so that
242 * the application can use opaque handles maintained in mpu_wrappers.c
243 * with all the APIs. */
244 TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName,
245 const TickType_t xTimerPeriodInTicks,
246 const UBaseType_t uxAutoReload,
247 void * const pvTimerID,
248 TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION;
249 TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
250 const TickType_t xTimerPeriodInTicks,
251 const UBaseType_t uxAutoReload,
252 void * const pvTimerID,
253 TimerCallbackFunction_t pxCallbackFunction,
254 StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION;
255 BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer,
256 StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
257 BaseType_t MPU_xTimerGenericCommandFromISR( TimerHandle_t xTimer,
258 const BaseType_t xCommandID,
259 const TickType_t xOptionalValue,
260 BaseType_t * const pxHigherPriorityTaskWoken,
261 const TickType_t xTicksToWait ) PRIVILEGED_FUNCTION;
263 /* MPU versions of event_group.h API functions. */
264 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
265 const EventBits_t uxBitsToWaitFor,
266 const BaseType_t xClearOnExit,
267 const BaseType_t xWaitForAllBits,
268 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
269 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
270 const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
271 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
272 const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;
273 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
274 const EventBits_t uxBitsToSet,
275 const EventBits_t uxBitsToWaitFor,
276 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
277 #if ( configUSE_TRACE_FACILITY == 1 )
278 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL;
279 void MPU_vEventGroupSetNumber( void * xEventGroup,
280 UBaseType_t uxEventGroupNumber ) FREERTOS_SYSTEM_CALL;
281 #endif /* ( configUSE_TRACE_FACILITY == 1 )*/
283 /* Privileged only wrappers for Event Group APIs. These are needed so that
284 * the application can use opaque handles maintained in mpu_wrappers.c
285 * with all the APIs. */
286 EventGroupHandle_t MPU_xEventGroupCreate( void ) PRIVILEGED_FUNCTION;
287 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) PRIVILEGED_FUNCTION;
288 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
289 BaseType_t MPU_xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
290 StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
291 BaseType_t MPU_xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup,
292 const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
293 BaseType_t MPU_xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup,
294 const EventBits_t uxBitsToSet,
295 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
296 EventBits_t MPU_xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
298 /* MPU versions of message/stream_buffer.h API functions. */
299 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
300 const void * pvTxData,
301 size_t xDataLengthBytes,
302 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
303 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
305 size_t xBufferLengthBytes,
306 TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
307 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
308 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
309 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
310 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
311 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
312 size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;
313 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
315 /* Privileged only wrappers for Stream Buffer APIs. These are needed so that
316 * the application can use opaque handles maintained in mpu_wrappers.c
317 * with all the APIs. */
318 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
319 size_t xTriggerLevelBytes,
320 BaseType_t xIsMessageBuffer,
321 StreamBufferCallbackFunction_t pxSendCompletedCallback,
322 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
323 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
324 size_t xTriggerLevelBytes,
325 BaseType_t xIsMessageBuffer,
326 uint8_t * const pucStreamBufferStorageArea,
327 StaticStreamBuffer_t * const pxStaticStreamBuffer,
328 StreamBufferCallbackFunction_t pxSendCompletedCallback,
329 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
330 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
331 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
332 BaseType_t MPU_xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffers,
333 uint8_t * ppucStreamBufferStorageArea,
334 StaticStreamBuffer_t * ppxStaticStreamBuffer ) PRIVILEGED_FUNCTION;
335 size_t MPU_xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
336 const void * pvTxData,
337 size_t xDataLengthBytes,
338 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
339 size_t MPU_xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
341 size_t xBufferLengthBytes,
342 BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
343 BaseType_t MPU_xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
344 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
345 BaseType_t MPU_xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
346 BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
348 #endif /* MPU_PROTOTYPES_H */