]> git.sur5r.net Git - freertos/blob - FreeRTOS/Source/include/mpu_wrappers.h
Update to MIT licensed FreeRTOS V10.0.0 - see https://www.freertos.org/History.txt
[freertos] / FreeRTOS / Source / include / mpu_wrappers.h
1 /*\r
2  * FreeRTOS Kernel V10.0.0\r
3  * Copyright (C) 2017 Amazon.com, Inc. or its affiliates.  All Rights Reserved.\r
4  *\r
5  * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
6  * this software and associated documentation files (the "Software"), to deal in\r
7  * the Software without restriction, including without limitation the rights to\r
8  * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
9  * the Software, and to permit persons to whom the Software is furnished to do so,\r
10  * subject to the following conditions:\r
11  *\r
12  * The above copyright notice and this permission notice shall be included in all\r
13  * copies or substantial portions of the Software. If you wish to use our Amazon\r
14  * FreeRTOS name, please do so in a fair use way that does not cause confusion.\r
15  *\r
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS\r
18  * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR\r
19  * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER\r
20  * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
21  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r
22  *\r
23  * http://www.FreeRTOS.org\r
24  * http://aws.amazon.com/freertos\r
25  *\r
26  * 1 tab == 4 spaces!\r
27  */\r
28 \r
29 #ifndef MPU_WRAPPERS_H\r
30 #define MPU_WRAPPERS_H\r
31 \r
32 /* This file redefines API functions to be called through a wrapper macro, but\r
33 only for ports that are using the MPU. */\r
34 #ifdef portUSING_MPU_WRAPPERS\r
35 \r
36         /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is\r
37         included from queue.c or task.c to prevent it from having an effect within\r
38         those files. */\r
39         #ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE\r
40 \r
41                 /*\r
42                  * Map standard (non MPU) API functions to equivalents that start\r
43                  * "MPU_".  This will cause the application code to call the MPU_\r
44                  * version, which wraps the non-MPU version with privilege promoting\r
45                  * then demoting code, so the kernel code always runs will full\r
46                  * privileges.\r
47                  */\r
48 \r
49                 /* Map standard tasks.h API functions to the MPU equivalents. */\r
50                 #define xTaskCreate                                                             MPU_xTaskCreate\r
51                 #define xTaskCreateStatic                                               MPU_xTaskCreateStatic\r
52                 #define xTaskCreateRestricted                                   MPU_xTaskCreateRestricted\r
53                 #define vTaskAllocateMPURegions                                 MPU_vTaskAllocateMPURegions\r
54                 #define vTaskDelete                                                             MPU_vTaskDelete\r
55                 #define vTaskDelay                                                              MPU_vTaskDelay\r
56                 #define vTaskDelayUntil                                                 MPU_vTaskDelayUntil\r
57                 #define xTaskAbortDelay                                                 MPU_xTaskAbortDelay\r
58                 #define uxTaskPriorityGet                                               MPU_uxTaskPriorityGet\r
59                 #define eTaskGetState                                                   MPU_eTaskGetState\r
60                 #define vTaskGetInfo                                                    MPU_vTaskGetInfo\r
61                 #define vTaskPrioritySet                                                MPU_vTaskPrioritySet\r
62                 #define vTaskSuspend                                                    MPU_vTaskSuspend\r
63                 #define vTaskResume                                                             MPU_vTaskResume\r
64                 #define vTaskSuspendAll                                                 MPU_vTaskSuspendAll\r
65                 #define xTaskResumeAll                                                  MPU_xTaskResumeAll\r
66                 #define xTaskGetTickCount                                               MPU_xTaskGetTickCount\r
67                 #define uxTaskGetNumberOfTasks                                  MPU_uxTaskGetNumberOfTasks\r
68                 #define pcTaskGetName                                                   MPU_pcTaskGetName\r
69                 #define xTaskGetHandle                                                  MPU_xTaskGetHandle\r
70                 #define uxTaskGetStackHighWaterMark                             MPU_uxTaskGetStackHighWaterMark\r
71                 #define vTaskSetApplicationTaskTag                              MPU_vTaskSetApplicationTaskTag\r
72                 #define xTaskGetApplicationTaskTag                              MPU_xTaskGetApplicationTaskTag\r
73                 #define vTaskSetThreadLocalStoragePointer               MPU_vTaskSetThreadLocalStoragePointer\r
74                 #define pvTaskGetThreadLocalStoragePointer              MPU_pvTaskGetThreadLocalStoragePointer\r
75                 #define xTaskCallApplicationTaskHook                    MPU_xTaskCallApplicationTaskHook\r
76                 #define xTaskGetIdleTaskHandle                                  MPU_xTaskGetIdleTaskHandle\r
77                 #define uxTaskGetSystemState                                    MPU_uxTaskGetSystemState\r
78                 #define vTaskList                                                               MPU_vTaskList\r
79                 #define vTaskGetRunTimeStats                                    MPU_vTaskGetRunTimeStats\r
80                 #define xTaskGenericNotify                                              MPU_xTaskGenericNotify\r
81                 #define xTaskNotifyWait                                                 MPU_xTaskNotifyWait\r
82                 #define ulTaskNotifyTake                                                MPU_ulTaskNotifyTake\r
83                 #define xTaskNotifyStateClear                                   MPU_xTaskNotifyStateClear\r
84 \r
85                 #define xTaskGetCurrentTaskHandle                               MPU_xTaskGetCurrentTaskHandle\r
86                 #define vTaskSetTimeOutState                                    MPU_vTaskSetTimeOutState\r
87                 #define xTaskCheckForTimeOut                                    MPU_xTaskCheckForTimeOut\r
88                 #define xTaskGetSchedulerState                                  MPU_xTaskGetSchedulerState\r
89 \r
90                 /* Map standard queue.h API functions to the MPU equivalents. */\r
91                 #define xQueueGenericSend                                               MPU_xQueueGenericSend\r
92                 #define xQueueReceive                                                   MPU_xQueueReceive\r
93                 #define xQueuePeek                                                              MPU_xQueuePeek\r
94                 #define xQueueSemaphoreTake                                             MPU_xQueueSemaphoreTake\r
95                 #define uxQueueMessagesWaiting                                  MPU_uxQueueMessagesWaiting\r
96                 #define uxQueueSpacesAvailable                                  MPU_uxQueueSpacesAvailable\r
97                 #define vQueueDelete                                                    MPU_vQueueDelete\r
98                 #define xQueueCreateMutex                                               MPU_xQueueCreateMutex\r
99                 #define xQueueCreateMutexStatic                                 MPU_xQueueCreateMutexStatic\r
100                 #define xQueueCreateCountingSemaphore                   MPU_xQueueCreateCountingSemaphore\r
101                 #define xQueueCreateCountingSemaphoreStatic             MPU_xQueueCreateCountingSemaphoreStatic\r
102                 #define xQueueGetMutexHolder                                    MPU_xQueueGetMutexHolder\r
103                 #define xQueueTakeMutexRecursive                                MPU_xQueueTakeMutexRecursive\r
104                 #define xQueueGiveMutexRecursive                                MPU_xQueueGiveMutexRecursive\r
105                 #define xQueueGenericCreate                                             MPU_xQueueGenericCreate\r
106                 #define xQueueGenericCreateStatic                               MPU_xQueueGenericCreateStatic\r
107                 #define xQueueCreateSet                                                 MPU_xQueueCreateSet\r
108                 #define xQueueAddToSet                                                  MPU_xQueueAddToSet\r
109                 #define xQueueRemoveFromSet                                             MPU_xQueueRemoveFromSet\r
110                 #define xQueueSelectFromSet                                             MPU_xQueueSelectFromSet\r
111                 #define xQueueGenericReset                                              MPU_xQueueGenericReset\r
112 \r
113                 #if( configQUEUE_REGISTRY_SIZE > 0 )\r
114                         #define vQueueAddToRegistry                                             MPU_vQueueAddToRegistry\r
115                         #define vQueueUnregisterQueue                                   MPU_vQueueUnregisterQueue\r
116                         #define pcQueueGetName                                                  MPU_pcQueueGetName\r
117                 #endif\r
118 \r
119                 /* Map standard timer.h API functions to the MPU equivalents. */\r
120                 #define xTimerCreate                                                    MPU_xTimerCreate\r
121                 #define xTimerCreateStatic                                              MPU_xTimerCreateStatic\r
122                 #define pvTimerGetTimerID                                               MPU_pvTimerGetTimerID\r
123                 #define vTimerSetTimerID                                                MPU_vTimerSetTimerID\r
124                 #define xTimerIsTimerActive                                             MPU_xTimerIsTimerActive\r
125                 #define xTimerGetTimerDaemonTaskHandle                  MPU_xTimerGetTimerDaemonTaskHandle\r
126                 #define xTimerPendFunctionCall                                  MPU_xTimerPendFunctionCall\r
127                 #define pcTimerGetName                                                  MPU_pcTimerGetName\r
128                 #define xTimerGetPeriod                                                 MPU_xTimerGetPeriod\r
129                 #define xTimerGetExpiryTime                                             MPU_xTimerGetExpiryTime\r
130                 #define xTimerGenericCommand                                    MPU_xTimerGenericCommand\r
131 \r
132                 /* Map standard event_group.h API functions to the MPU equivalents. */\r
133                 #define xEventGroupCreate                                               MPU_xEventGroupCreate\r
134                 #define xEventGroupCreateStatic                                 MPU_xEventGroupCreateStatic\r
135                 #define xEventGroupWaitBits                                             MPU_xEventGroupWaitBits\r
136                 #define xEventGroupClearBits                                    MPU_xEventGroupClearBits\r
137                 #define xEventGroupSetBits                                              MPU_xEventGroupSetBits\r
138                 #define xEventGroupSync                                                 MPU_xEventGroupSync\r
139                 #define vEventGroupDelete                                               MPU_vEventGroupDelete\r
140 \r
141                 /* Map standard message/stream_buffer.h API functions to the MPU\r
142                 equivalents. */\r
143                 #define xStreamBufferSend                                               MPU_xStreamBufferSend\r
144                 #define xStreamBufferSendFromISR                                MPU_xStreamBufferSendFromISR\r
145                 #define xStreamBufferReceive                                    MPU_xStreamBufferReceive\r
146                 #define xStreamBufferReceiveFromISR                             MPU_xStreamBufferReceiveFromISR\r
147                 #define vStreamBufferDelete                                             MPU_vStreamBufferDelete\r
148                 #define xStreamBufferIsFull                                             MPU_xStreamBufferIsFull\r
149                 #define xStreamBufferIsEmpty                                    MPU_xStreamBufferIsEmpty\r
150                 #define xStreamBufferReset                                              MPU_xStreamBufferReset\r
151                 #define xStreamBufferSpacesAvailable                    MPU_xStreamBufferSpacesAvailable\r
152                 #define xStreamBufferBytesAvailable                             MPU_xStreamBufferBytesAvailable\r
153                 #define xStreamBufferSetTriggerLevel                    MPU_xStreamBufferSetTriggerLevel\r
154                 #define xStreamBufferGenericCreate                              MPU_xStreamBufferGenericCreate\r
155                 #define xStreamBufferGenericCreateStatic                MPU_xStreamBufferGenericCreateStatic\r
156 \r
157 \r
158                 /* Remove the privileged function macro, but keep the PRIVILEGED_DATA\r
159                 macro so applications can place data in privileged access sections\r
160                 (useful when using statically allocated objects). */\r
161                 #define PRIVILEGED_FUNCTION\r
162                 #define PRIVILEGED_DATA __attribute__((section("privileged_data")))\r
163 \r
164         #else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */\r
165 \r
166                 /* Ensure API functions go in the privileged execution section. */\r
167                 #define PRIVILEGED_FUNCTION __attribute__((section("privileged_functions")))\r
168                 #define PRIVILEGED_DATA __attribute__((section("privileged_data")))\r
169 \r
170         #endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */\r
171 \r
172 #else /* portUSING_MPU_WRAPPERS */\r
173 \r
174         #define PRIVILEGED_FUNCTION\r
175         #define PRIVILEGED_DATA\r
176         #define portUSING_MPU_WRAPPERS 0\r
177 \r
178 #endif /* portUSING_MPU_WRAPPERS */\r
179 \r
180 \r
181 #endif /* MPU_WRAPPERS_H */\r
182 \r