]> begriffs open source - freertos/blob - include/mpu_prototypes.h
Fix Pico compile warning (#732)
[freertos] / include / mpu_prototypes.h
1 /*
2  * FreeRTOS Kernel <DEVELOPMENT BRANCH>
3  * Copyright (C) 2021 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
5  * SPDX-License-Identifier: MIT
6  *
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:
13  *
14  * The above copyright notice and this permission notice shall be included in all
15  * copies or substantial portions of the Software.
16  *
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.
23  *
24  * https://www.FreeRTOS.org
25  * https://github.com/FreeRTOS
26  *
27  */
28
29 /*
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.
35  */
36
37
38 #ifndef MPU_PROTOTYPES_H
39 #define MPU_PROTOTYPES_H
40
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 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL;
57 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
58 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
59 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
60                                      TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;
61 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
62 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
63                                             BaseType_t xIndex,
64                                             void * pvValue ) FREERTOS_SYSTEM_CALL;
65 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
66                                                BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;
67 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;
68 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
69                                       const UBaseType_t uxArraySize,
70                                       configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;
71 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimeCounter( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
72 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetRunTimePercent( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
73 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;
74 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) FREERTOS_SYSTEM_CALL;
75 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
76                                    UBaseType_t uxIndexToNotify,
77                                    uint32_t ulValue,
78                                    eNotifyAction eAction,
79                                    uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
80 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
81                                        uint32_t ulBitsToClearOnEntry,
82                                        uint32_t ulBitsToClearOnExit,
83                                        uint32_t * pulNotificationValue,
84                                        TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
85 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
86                                       BaseType_t xClearCountOnExit,
87                                       TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
88 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
89                                              UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL;
90 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
91                                             UBaseType_t uxIndexToClear,
92                                             uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;
93 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;
94 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
95                                      TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;
96 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;
97 BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;
98
99 /* Privileged only wrappers for Task APIs. These are needed so that
100  * the application can use opaque handles maintained in mpu_wrappers.c
101  * with all the APIs. */
102 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
103                             const char * const pcName,
104                             const uint16_t usStackDepth,
105                             void * const pvParameters,
106                             UBaseType_t uxPriority,
107                             TaskHandle_t * const pxCreatedTask ) PRIVILEGED_FUNCTION;
108 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
109                                     const char * const pcName,
110                                     const uint32_t ulStackDepth,
111                                     void * const pvParameters,
112                                     UBaseType_t uxPriority,
113                                     StackType_t * const puxStackBuffer,
114                                     StaticTask_t * const pxTaskBuffer ) PRIVILEGED_FUNCTION;
115 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) PRIVILEGED_FUNCTION;
116 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
117                            UBaseType_t uxNewPriority ) PRIVILEGED_FUNCTION;
118 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) PRIVILEGED_FUNCTION;
119 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
120                                              void * pvParameter ) 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 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 BaseType_t MPU_xTaskResumeFromISR( TaskHandle_t xTaskToResume ) PRIVILEGED_FUNCTION;
132 TaskHookFunction_t MPU_xTaskGetApplicationTaskTagFromISR( TaskHandle_t xTask ) PRIVILEGED_FUNCTION;
133 BaseType_t MPU_xTaskGenericNotifyFromISR( TaskHandle_t xTaskToNotify,
134                                           UBaseType_t uxIndexToNotify,
135                                           uint32_t ulValue,
136                                           eNotifyAction eAction,
137                                           uint32_t * pulPreviousNotificationValue,
138                                           BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
139 void MPU_vTaskGenericNotifyGiveFromISR( TaskHandle_t xTaskToNotify,
140                                         UBaseType_t uxIndexToNotify,
141                                         BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
142
143 /* MPU versions of queue.h API functions. */
144 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
145                                   const void * const pvItemToQueue,
146                                   TickType_t xTicksToWait,
147                                   const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;
148 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue,
149                               void * const pvBuffer,
150                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
151 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
152                            void * const pvBuffer,
153                            TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
154 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
155                                     TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
156 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
157 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
158 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;
159 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
160                                          TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
161 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;
162 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
163                               const char * pcName ) FREERTOS_SYSTEM_CALL;
164 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
165 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
166 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
167                                QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
168 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
169                                                 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
170 void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue,
171                                UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL;
172 UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
173 uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
174
175 /* Privileged only wrappers for Queue APIs. These are needed so that
176  * the application can use opaque handles maintained in mpu_wrappers.c
177  * with all the APIs. */
178 void MPU_vQueueDelete( QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
179 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
180 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
181                                            StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
182 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
183                                                  const UBaseType_t uxInitialCount ) PRIVILEGED_FUNCTION;
184 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
185                                                        const UBaseType_t uxInitialCount,
186                                                        StaticQueue_t * pxStaticQueue ) PRIVILEGED_FUNCTION;
187 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
188                                        const UBaseType_t uxItemSize,
189                                        const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
190 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
191                                              const UBaseType_t uxItemSize,
192                                              uint8_t * pucQueueStorage,
193                                              StaticQueue_t * pxStaticQueue,
194                                              const uint8_t ucQueueType ) PRIVILEGED_FUNCTION;
195 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) PRIVILEGED_FUNCTION;
196 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
197                                     QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
198 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
199                                    BaseType_t xNewQueue ) PRIVILEGED_FUNCTION;
200 BaseType_t MPU_xQueueGenericGetStaticBuffers( QueueHandle_t xQueue,
201                                               uint8_t ** ppucQueueStorage,
202                                               StaticQueue_t ** ppxStaticQueue ) PRIVILEGED_FUNCTION;
203 BaseType_t MPU_xQueueGenericSendFromISR( QueueHandle_t xQueue,
204                                          const void * const pvItemToQueue,
205                                          BaseType_t * const pxHigherPriorityTaskWoken,
206                                          const BaseType_t xCopyPosition ) PRIVILEGED_FUNCTION;
207 BaseType_t MPU_xQueueGiveFromISR( QueueHandle_t xQueue,
208                                   BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
209 BaseType_t MPU_xQueuePeekFromISR( QueueHandle_t xQueue,
210                                   void * const pvBuffer ) PRIVILEGED_FUNCTION;
211 BaseType_t MPU_xQueueReceiveFromISR( QueueHandle_t xQueue,
212                                      void * const pvBuffer,
213                                      BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
214 BaseType_t MPU_xQueueIsQueueEmptyFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
215 BaseType_t MPU_xQueueIsQueueFullFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
216 UBaseType_t MPU_uxQueueMessagesWaitingFromISR( const QueueHandle_t xQueue ) PRIVILEGED_FUNCTION;
217 TaskHandle_t MPU_xQueueGetMutexHolderFromISR( QueueHandle_t xSemaphore ) PRIVILEGED_FUNCTION;
218 QueueSetMemberHandle_t MPU_xQueueSelectFromSetFromISR( QueueSetHandle_t xQueueSet ) PRIVILEGED_FUNCTION;
219
220 /* MPU versions of timers.h API functions. */
221 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
222 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
223                            void * pvNewID ) FREERTOS_SYSTEM_CALL;
224 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
225 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
226 BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
227                                      const BaseType_t xCommandID,
228                                      const TickType_t xOptionalValue,
229                                      BaseType_t * const pxHigherPriorityTaskWoken,
230                                      const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
231 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
232 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
233                               const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
234 BaseType_t MPU_xTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
235 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
236 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
237 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
238
239 /* Privileged only wrappers for Timer APIs. These are needed so that
240  * the application can use opaque handles maintained in mpu_wrappers.c
241  * with all the APIs. */
242 TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName,
243                                 const TickType_t xTimerPeriodInTicks,
244                                 const UBaseType_t uxAutoReload,
245                                 void * const pvTimerID,
246                                 TimerCallbackFunction_t pxCallbackFunction ) PRIVILEGED_FUNCTION;
247 TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
248                                       const TickType_t xTimerPeriodInTicks,
249                                       const UBaseType_t uxAutoReload,
250                                       void * const pvTimerID,
251                                       TimerCallbackFunction_t pxCallbackFunction,
252                                       StaticTimer_t * pxTimerBuffer ) PRIVILEGED_FUNCTION;
253 BaseType_t MPU_xTimerGetStaticBuffer( TimerHandle_t xTimer,
254                                       StaticTimer_t ** ppxTimerBuffer ) PRIVILEGED_FUNCTION;
255
256 /* MPU versions of event_group.h API functions. */
257 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
258                                      const EventBits_t uxBitsToWaitFor,
259                                      const BaseType_t xClearOnExit,
260                                      const BaseType_t xWaitForAllBits,
261                                      TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
262 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
263                                       const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
264 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
265                                     const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;
266 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
267                                  const EventBits_t uxBitsToSet,
268                                  const EventBits_t uxBitsToWaitFor,
269                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
270 #if ( configUSE_TRACE_FACILITY == 1 )
271     UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL;
272     void MPU_vEventGroupSetNumber( void * xEventGroup,
273                                    UBaseType_t uxEventGroupNumber ) FREERTOS_SYSTEM_CALL;
274 #endif /* ( configUSE_TRACE_FACILITY == 1 )*/
275
276 /* Privileged only wrappers for Event Group APIs. These are needed so that
277  * the application can use opaque handles maintained in mpu_wrappers.c
278  * with all the APIs. */
279 EventGroupHandle_t MPU_xEventGroupCreate( void ) PRIVILEGED_FUNCTION;
280 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) PRIVILEGED_FUNCTION;
281 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
282 BaseType_t MPU_xEventGroupGetStaticBuffer( EventGroupHandle_t xEventGroup,
283                                            StaticEventGroup_t ** ppxEventGroupBuffer ) PRIVILEGED_FUNCTION;
284 BaseType_t MPU_xEventGroupClearBitsFromISR( EventGroupHandle_t xEventGroup,
285                                             const EventBits_t uxBitsToClear ) PRIVILEGED_FUNCTION;
286 BaseType_t MPU_xEventGroupSetBitsFromISR( EventGroupHandle_t xEventGroup,
287                                           const EventBits_t uxBitsToSet,
288                                           BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
289 EventBits_t MPU_xEventGroupGetBitsFromISR( EventGroupHandle_t xEventGroup ) PRIVILEGED_FUNCTION;
290
291 /* MPU versions of message/stream_buffer.h API functions. */
292 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
293                               const void * pvTxData,
294                               size_t xDataLengthBytes,
295                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
296 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
297                                  void * pvRxData,
298                                  size_t xBufferLengthBytes,
299                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
300 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
301 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
302 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
303 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
304 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
305                                              size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;
306 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
307
308 /* Privileged only wrappers for Stream Buffer APIs. These are needed so that
309  * the application can use opaque handles maintained in mpu_wrappers.c
310  * with all the APIs. */
311 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
312                                                      size_t xTriggerLevelBytes,
313                                                      BaseType_t xIsMessageBuffer,
314                                                      StreamBufferCallbackFunction_t pxSendCompletedCallback,
315                                                      StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
316 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
317                                                            size_t xTriggerLevelBytes,
318                                                            BaseType_t xIsMessageBuffer,
319                                                            uint8_t * const pucStreamBufferStorageArea,
320                                                            StaticStreamBuffer_t * const pxStaticStreamBuffer,
321                                                            StreamBufferCallbackFunction_t pxSendCompletedCallback,
322                                                            StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) PRIVILEGED_FUNCTION;
323 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
324 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) PRIVILEGED_FUNCTION;
325 BaseType_t MPU_xStreamBufferGetStaticBuffers( StreamBufferHandle_t xStreamBuffers,
326                                               uint8_t * ppucStreamBufferStorageArea,
327                                               StaticStreamBuffer_t * ppxStaticStreamBuffer ) PRIVILEGED_FUNCTION;
328 size_t MPU_xStreamBufferSendFromISR( StreamBufferHandle_t xStreamBuffer,
329                                      const void * pvTxData,
330                                      size_t xDataLengthBytes,
331                                      BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
332 size_t MPU_xStreamBufferReceiveFromISR( StreamBufferHandle_t xStreamBuffer,
333                                         void * pvRxData,
334                                         size_t xBufferLengthBytes,
335                                         BaseType_t * const pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
336 BaseType_t MPU_xStreamBufferSendCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
337                                                   BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
338 BaseType_t MPU_xStreamBufferReceiveCompletedFromISR( StreamBufferHandle_t xStreamBuffer,
339                                                      BaseType_t * pxHigherPriorityTaskWoken ) PRIVILEGED_FUNCTION;
340
341 #endif /* MPU_PROTOTYPES_H */