]> begriffs open source - freertos/blob - include/mpu_prototypes.h
Feature: SMP (#278)
[freertos] / include / mpu_prototypes.h
1 /*
2  * FreeRTOS Kernel V10.4.3
3  * Copyright (C) 2020 Amazon.com, Inc. or its affiliates.  All Rights Reserved.
4  *
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:
11  *
12  * The above copyright notice and this permission notice shall be included in all
13  * copies or substantial portions of the Software.
14  *
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.
21  *
22  * https://www.FreeRTOS.org
23  * https://github.com/FreeRTOS
24  *
25  */
26
27 /*
28  * When the MPU is used the standard (non MPU) API functions are mapped to
29  * equivalents that start "MPU_", the prototypes for which are defined in this
30  * header files.  This will cause the application code to call the MPU_ version
31  * which wraps the non-MPU version with privilege promoting then demoting code,
32  * so the kernel code always runs will full privileges.
33  */
34
35
36 #ifndef MPU_PROTOTYPES_H
37 #define MPU_PROTOTYPES_H
38
39 /* MPU versions of tasks.h API functions. */
40 BaseType_t MPU_xTaskCreate( TaskFunction_t pxTaskCode,
41                             const char * const pcName,
42                             const uint16_t usStackDepth,
43                             void * const pvParameters,
44                             UBaseType_t uxPriority,
45                             TaskHandle_t * const pxCreatedTask ) FREERTOS_SYSTEM_CALL;
46 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
47                                     const char * const pcName,
48                                     const uint32_t ulStackDepth,
49                                     void * const pvParameters,
50                                     UBaseType_t uxPriority,
51                                     StackType_t * const puxStackBuffer,
52                                     StaticTask_t * const pxTaskBuffer ) FREERTOS_SYSTEM_CALL;
53 void MPU_vTaskDelete( TaskHandle_t xTaskToDelete ) FREERTOS_SYSTEM_CALL;
54 void MPU_vTaskDelay( const TickType_t xTicksToDelay ) FREERTOS_SYSTEM_CALL;
55 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
56                           const TickType_t xTimeIncrement ) FREERTOS_SYSTEM_CALL;
57 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
58 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
59 eTaskState MPU_eTaskGetState( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
60 void MPU_vTaskGetInfo( TaskHandle_t xTask,
61                        TaskStatus_t * pxTaskStatus,
62                        BaseType_t xGetFreeStackSpace,
63                        eTaskState eState ) FREERTOS_SYSTEM_CALL;
64 void MPU_vTaskPrioritySet( TaskHandle_t xTask,
65                            UBaseType_t uxNewPriority ) FREERTOS_SYSTEM_CALL;
66 void MPU_vTaskSuspend( TaskHandle_t xTaskToSuspend ) FREERTOS_SYSTEM_CALL;
67 void MPU_vTaskResume( TaskHandle_t xTaskToResume ) FREERTOS_SYSTEM_CALL;
68 void MPU_vTaskStartScheduler( void ) FREERTOS_SYSTEM_CALL;
69 void MPU_vTaskSuspendAll( void ) FREERTOS_SYSTEM_CALL;
70 BaseType_t MPU_xTaskResumeAll( void ) FREERTOS_SYSTEM_CALL;
71 TickType_t MPU_xTaskGetTickCount( void ) FREERTOS_SYSTEM_CALL;
72 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) FREERTOS_SYSTEM_CALL;
73 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) FREERTOS_SYSTEM_CALL;
74 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) FREERTOS_SYSTEM_CALL;
75 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
76 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
77 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
78                                      TaskHookFunction_t pxHookFunction ) FREERTOS_SYSTEM_CALL;
79 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) FREERTOS_SYSTEM_CALL;
80 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
81                                             BaseType_t xIndex,
82                                             void * pvValue ) FREERTOS_SYSTEM_CALL;
83 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
84                                                BaseType_t xIndex ) FREERTOS_SYSTEM_CALL;
85 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
86                                              void * pvParameter ) FREERTOS_SYSTEM_CALL;
87 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) FREERTOS_SYSTEM_CALL;
88 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * const pxTaskStatusArray,
89                                       const UBaseType_t uxArraySize,
90                                       uint32_t * const pulTotalRunTime ) FREERTOS_SYSTEM_CALL;
91 uint32_t MPU_ulTaskGetIdleRunTimeCounter( void ) FREERTOS_SYSTEM_CALL;
92 void MPU_vTaskList( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL;
93 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) FREERTOS_SYSTEM_CALL;
94 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
95                                    UBaseType_t uxIndexToNotify,
96                                    uint32_t ulValue,
97                                    eNotifyAction eAction,
98                                    uint32_t * pulPreviousNotificationValue ) FREERTOS_SYSTEM_CALL;
99 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
100                                        uint32_t ulBitsToClearOnEntry,
101                                        uint32_t ulBitsToClearOnExit,
102                                        uint32_t * pulNotificationValue,
103                                        TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
104 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
105                                       BaseType_t xClearCountOnExit,
106                                       TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
107 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
108                                              UBaseType_t uxIndexToClear ) FREERTOS_SYSTEM_CALL;
109 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
110                                             UBaseType_t uxIndexToClear,
111                                             uint32_t ulBitsToClear ) FREERTOS_SYSTEM_CALL;
112 BaseType_t MPU_xTaskIncrementTick( void ) FREERTOS_SYSTEM_CALL;
113 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) FREERTOS_SYSTEM_CALL;
114 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) FREERTOS_SYSTEM_CALL;
115 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
116                                      TickType_t * const pxTicksToWait ) FREERTOS_SYSTEM_CALL;
117 void MPU_vTaskMissedYield( void ) FREERTOS_SYSTEM_CALL;
118 BaseType_t MPU_xTaskGetSchedulerState( void ) FREERTOS_SYSTEM_CALL;
119 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) FREERTOS_SYSTEM_CALL;
120
121 /* MPU versions of queue.h API functions. */
122 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
123                                   const void * const pvItemToQueue,
124                                   TickType_t xTicksToWait,
125                                   const BaseType_t xCopyPosition ) FREERTOS_SYSTEM_CALL;
126 BaseType_t MPU_xQueueReceive( QueueHandle_t xQueue,
127                               void * const pvBuffer,
128                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
129 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
130                            void * const pvBuffer,
131                            TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
132 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
133                                     TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
134 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
135 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
136 void MPU_vQueueDelete( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
137 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
138 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
139                                            StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
140 QueueHandle_t MPU_xQueueCreateCountingSemaphore( const UBaseType_t uxMaxCount,
141                                                  const UBaseType_t uxInitialCount ) FREERTOS_SYSTEM_CALL;
142 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
143                                                        const UBaseType_t uxInitialCount,
144                                                        StaticQueue_t * pxStaticQueue ) FREERTOS_SYSTEM_CALL;
145 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) FREERTOS_SYSTEM_CALL;
146 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
147                                          TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
148 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t pxMutex ) FREERTOS_SYSTEM_CALL;
149 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
150                               const char * pcName ) FREERTOS_SYSTEM_CALL;
151 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
152 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) FREERTOS_SYSTEM_CALL;
153 QueueHandle_t MPU_xQueueGenericCreate( const UBaseType_t uxQueueLength,
154                                        const UBaseType_t uxItemSize,
155                                        const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
156 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
157                                              const UBaseType_t uxItemSize,
158                                              uint8_t * pucQueueStorage,
159                                              StaticQueue_t * pxStaticQueue,
160                                              const uint8_t ucQueueType ) FREERTOS_SYSTEM_CALL;
161 QueueSetHandle_t MPU_xQueueCreateSet( const UBaseType_t uxEventQueueLength ) FREERTOS_SYSTEM_CALL;
162 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
163                                QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
164 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
165                                     QueueSetHandle_t xQueueSet ) FREERTOS_SYSTEM_CALL;
166 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
167                                                 const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
168 BaseType_t MPU_xQueueGenericReset( QueueHandle_t xQueue,
169                                    BaseType_t xNewQueue ) 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 /* MPU versions of timers.h API functions. */
176 TimerHandle_t MPU_xTimerCreate( const char * const pcTimerName,
177                                 const TickType_t xTimerPeriodInTicks,
178                                 const UBaseType_t uxAutoReload,
179                                 void * const pvTimerID,
180                                 TimerCallbackFunction_t pxCallbackFunction ) FREERTOS_SYSTEM_CALL;
181 TimerHandle_t MPU_xTimerCreateStatic( const char * const pcTimerName,
182                                       const TickType_t xTimerPeriodInTicks,
183                                       const UBaseType_t uxAutoReload,
184                                       void * const pvTimerID,
185                                       TimerCallbackFunction_t pxCallbackFunction,
186                                       StaticTimer_t * pxTimerBuffer ) FREERTOS_SYSTEM_CALL;
187 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
188 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
189                            void * pvNewID ) FREERTOS_SYSTEM_CALL;
190 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
191 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) FREERTOS_SYSTEM_CALL;
192 BaseType_t MPU_xTimerPendFunctionCall( PendedFunction_t xFunctionToPend,
193                                        void * pvParameter1,
194                                        uint32_t ulParameter2,
195                                        TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
196 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
197 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
198                               const UBaseType_t uxAutoReload ) FREERTOS_SYSTEM_CALL;
199 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
200 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
201 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) FREERTOS_SYSTEM_CALL;
202 BaseType_t MPU_xTimerCreateTimerTask( void ) FREERTOS_SYSTEM_CALL;
203 BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
204                                      const BaseType_t xCommandID,
205                                      const TickType_t xOptionalValue,
206                                      BaseType_t * const pxHigherPriorityTaskWoken,
207                                      const TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
208
209 /* MPU versions of event_group.h API functions. */
210 EventGroupHandle_t MPU_xEventGroupCreate( void ) FREERTOS_SYSTEM_CALL;
211 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) FREERTOS_SYSTEM_CALL;
212 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
213                                      const EventBits_t uxBitsToWaitFor,
214                                      const BaseType_t xClearOnExit,
215                                      const BaseType_t xWaitForAllBits,
216                                      TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
217 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
218                                       const EventBits_t uxBitsToClear ) FREERTOS_SYSTEM_CALL;
219 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
220                                     const EventBits_t uxBitsToSet ) FREERTOS_SYSTEM_CALL;
221 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
222                                  const EventBits_t uxBitsToSet,
223                                  const EventBits_t uxBitsToWaitFor,
224                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
225 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) FREERTOS_SYSTEM_CALL;
226 UBaseType_t MPU_uxEventGroupGetNumber( void * xEventGroup ) FREERTOS_SYSTEM_CALL;
227
228 /* MPU versions of message/stream_buffer.h API functions. */
229 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
230                               const void * pvTxData,
231                               size_t xDataLengthBytes,
232                               TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
233 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
234                                  void * pvRxData,
235                                  size_t xBufferLengthBytes,
236                                  TickType_t xTicksToWait ) FREERTOS_SYSTEM_CALL;
237 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
238 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
239 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
240 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
241 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
242 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
243 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) FREERTOS_SYSTEM_CALL;
244 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
245                                              size_t xTriggerLevel ) FREERTOS_SYSTEM_CALL;
246 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
247                                                      size_t xTriggerLevelBytes,
248                                                      BaseType_t xIsMessageBuffer ) FREERTOS_SYSTEM_CALL;
249 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
250                                                            size_t xTriggerLevelBytes,
251                                                            BaseType_t xIsMessageBuffer,
252                                                            uint8_t * const pucStreamBufferStorageArea,
253                                                            StaticStreamBuffer_t * const pxStaticStreamBuffer ) FREERTOS_SYSTEM_CALL;
254
255
256
257 #endif /* MPU_PROTOTYPES_H */