]> begriffs open source - freertos/blob - include/mpu_prototypes.h
Fix typo in check comment of configMAX_SYSCALL_INTERRUPT_PRIORITY (#690)
[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 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
43                             const char * const pcName,
44                             const uint16_t usStackDepth,
45                             void * const pvParameters,
46                             UBaseType_t uxPriority,
47                             TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL;
48 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
49                                     const char * const pcName,
50                                     const uint32_t ulStackDepth,
51                                     void * const pvParameters,
52                                     UBaseType_t uxPriority,
53                                     StackType_t * const puxStackBuffer,
54                                     StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL;
55 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL;
56 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
57 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
58                                 const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL;
59 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
60 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
61 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
62 void MPU_vTaskGetInfo( TaskHandle_t xTask,
63                        TaskStatus_t * pxTaskStatus,
64                        BaseType_t xGetFreeStackSpace,
65                        eTaskState eState ) FREERTOS_SYSTEM_CALL;
66 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
67                            UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL;
68 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL;
69 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL;
70 void MPU_vTaskStartScheduler( void ) FREERTOS_SYSTEM_CALL;
71 void MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL;
72 BaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL;
73 TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL;
74 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL;
75 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL;
76 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) FREERTOS_SYSTEM_CALL;
77 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
78 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
79 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
80                                      TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;
81 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
82 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
83                                             BaseType_t xIndex,
84                                             void * pvValue ) FREERTOS_SYSTEM_CALL;
85 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
86                                                BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;
87 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
88                                              void * pvParameter ) FREERTOS_SYSTEM_CALL;
89 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;
90 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
91                                       const UBaseType_t uxArraySize,
92                                       configRUN_TIME_COUNTER_TYPE * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;
93 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;
94 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) FREERTOS_SYSTEM_CALL;
95 void MPU_vTaskList( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL;
96 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL;
97 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
98                                    UBaseType_t uxIndexToNotify,
99                                    uint32_t ulValue,
100                                    eNotifyAction eAction,
101                                    uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
102 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
103                                        uint32_t ulBitsToClearOnEntry,
104                                        uint32_t ulBitsToClearOnExit,
105                                        uint32_t * pulNotificationValue,
106                                        TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
107 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
108                                       BaseType_t xClearCountOnExit,
109                                       TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
110 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
111                                              UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL;
112 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
113                                             UBaseType_t uxIndexToClear,
114                                             uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;
115 BaseType_t MPU_xTaskIncrementTick( void ) FREERTOS_SYSTEM_CALL;
116 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;
117 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;
118 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
119                                      TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;
120 void MPU_vTaskMissedYield( void ) FREERTOS_SYSTEM_CALL;
121 BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;
122 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL;
123
124 /* MPU versions of queue.h API functions. */
125 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
126                                   const void * const pvItemToQueue,
127                                   TickType_t xTicksToWait,
128                                   const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;
129 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue,
130                               void * const pvBuffer,
131                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
132 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
133                            void * const pvBuffer,
134                            TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
135 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
136                                     TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
137 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
138 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
139 void MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
140 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
141 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
142                                            StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
143 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
144                                                  const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL;
145 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
146                                                        const UBaseType_t uxInitialCount,
147                                                        StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
148 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;
149 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
150                                          TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
151 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;
152 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
153                               const char * pcName ) FREERTOS_SYSTEM_CALL;
154 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
155 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
156 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
157                                        const UBaseType_t uxItemSize,
158                                        const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
159 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
160                                              const UBaseType_t uxItemSize,
161                                              uint8_t * pucQueueStorage,
162                                              StaticQueue_t * pxStaticQueue,
163                                              const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
164 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL;
165 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
166                                QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
167 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
168                                     QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
169 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
170                                                 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
171 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
172                                    BaseType_t xNewQueue ) FREERTOS_SYSTEM_CALL;
173 void MPU_vQueueSetQueueNumber( QueueHandle_t xQueue,
174                                UBaseType_t uxQueueNumber ) FREERTOS_SYSTEM_CALL;
175 UBaseType_t MPU_uxQueueGetQueueNumber( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
176 uint8_t MPU_ucQueueGetQueueType( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
177
178 /* MPU versions of timers.h API functions. */
179 TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName,
180                                 const TickType_t xTimerPeriodInTicks,
181                                 const UBaseType_t uxAutoReload,
182                                 void * const pvTimerID,
183                                 TimerCallbackFunction_t pxCallbackFunction ) FREERTOS_SYSTEM_CALL;
184 TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
185                                       const TickType_t xTimerPeriodInTicks,
186                                       const UBaseType_t uxAutoReload,
187                                       void * const pvTimerID,
188                                       TimerCallbackFunction_t pxCallbackFunction,
189                                       StaticTimer_t * pxTimerBuffer ) FREERTOS_SYSTEM_CALL;
190 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
191 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
192                            void * pvNewID ) FREERTOS_SYSTEM_CALL;
193 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
194 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
195 BaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend,
196                                        void * pvParameter1,
197                                        uint32_t ulParameter2,
198                                        TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
199 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
200 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
201                               const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
202 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
203 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
204 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
205 BaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL;
206 BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
207                                      const BaseType_t xCommandID,
208                                      const TickType_t xOptionalValue,
209                                      BaseType_t * const pxHigherPriorityTaskWoken,
210                                      const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
211
212 /* MPU versions of event_group.h API functions. */
213 EventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL;
214 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL;
215 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
216                                      const EventBits_t uxBitsToWaitFor,
217                                      const BaseType_t xClearOnExit,
218                                      const BaseType_t xWaitForAllBits,
219                                      TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
220 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
221                                       const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
222 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
223                                     const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;
224 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
225                                  const EventBits_t uxBitsToSet,
226                                  const EventBits_t uxBitsToWaitFor,
227                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
228 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL;
229 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL;
230
231 /* MPU versions of message/stream_buffer.h API functions. */
232 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
233                               const void * pvTxData,
234                               size_t xDataLengthBytes,
235                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
236 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
237                                  void * pvRxData,
238                                  size_t xBufferLengthBytes,
239                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
240 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
241 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
242 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
243 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
244 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
245 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
246 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
247 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
248                                              size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;
249 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
250                                                      size_t xTriggerLevelBytes,
251                                                      BaseType_t xIsMessageBuffer,
252                                                      StreamBufferCallbackFunction_t pxSendCompletedCallback,
253                                                      StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) FREERTOS_SYSTEM_CALL;
254 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
255                                                            size_t xTriggerLevelBytes,
256                                                            BaseType_t xIsMessageBuffer,
257                                                            uint8_t * const pucStreamBufferStorageArea,
258                                                            StaticStreamBuffer_t * const pxStaticStreamBuffer,
259                                                            StreamBufferCallbackFunction_t pxSendCompletedCallback,
260                                                            StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) FREERTOS_SYSTEM_CALL;
261
262
263
264 #endif /* MPU_PROTOTYPES_H */