]> begriffs open source - cmsis-freertos/blob - Source/include/mpu_wrappers.h
renamed Docs to docs
[cmsis-freertos] / Source / include / mpu_wrappers.h
1 /*
2     FreeRTOS V9.0.0 - Copyright (C) 2016 Real Time Engineers Ltd.
3     All rights reserved
4
5     VISIT http://www.FreeRTOS.org TO ENSURE YOU ARE USING THE LATEST VERSION.
6
7     This file is part of the FreeRTOS distribution.
8
9     FreeRTOS is free software; you can redistribute it and/or modify it under
10     the terms of the GNU General Public License (version 2) as published by the
11     Free Software Foundation >>>> AND MODIFIED BY <<<< the FreeRTOS exception.
12
13     ***************************************************************************
14     >>!   NOTE: The modification to the GPL is included to allow you to     !<<
15     >>!   distribute a combined work that includes FreeRTOS without being   !<<
16     >>!   obliged to provide the source code for proprietary components     !<<
17     >>!   outside of the FreeRTOS kernel.                                   !<<
18     ***************************************************************************
19
20     FreeRTOS is distributed in the hope that it will be useful, but WITHOUT ANY
21     WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
22     FOR A PARTICULAR PURPOSE.  Full license text is available on the following
23     link: http://www.freertos.org/a00114.html
24
25     ***************************************************************************
26      *                                                                       *
27      *    FreeRTOS provides completely free yet professionally developed,    *
28      *    robust, strictly quality controlled, supported, and cross          *
29      *    platform software that is more than just the market leader, it     *
30      *    is the industry's de facto standard.                               *
31      *                                                                       *
32      *    Help yourself get started quickly while simultaneously helping     *
33      *    to support the FreeRTOS project by purchasing a FreeRTOS           *
34      *    tutorial book, reference manual, or both:                          *
35      *    http://www.FreeRTOS.org/Documentation                              *
36      *                                                                       *
37     ***************************************************************************
38
39     http://www.FreeRTOS.org/FAQHelp.html - Having a problem?  Start by reading
40     the FAQ page "My application does not run, what could be wrong?".  Have you
41     defined configASSERT()?
42
43     http://www.FreeRTOS.org/support - In return for receiving this top quality
44     embedded software for free we request you assist our global community by
45     participating in the support forum.
46
47     http://www.FreeRTOS.org/training - Investing in training allows your team to
48     be as productive as possible as early as possible.  Now you can receive
49     FreeRTOS training directly from Richard Barry, CEO of Real Time Engineers
50     Ltd, and the world's leading authority on the world's leading RTOS.
51
52     http://www.FreeRTOS.org/plus - A selection of FreeRTOS ecosystem products,
53     including FreeRTOS+Trace - an indispensable productivity tool, a DOS
54     compatible FAT file system, and our tiny thread aware UDP/IP stack.
55
56     http://www.FreeRTOS.org/labs - Where new FreeRTOS products go to incubate.
57     Come and try FreeRTOS+TCP, our new open source TCP/IP stack for FreeRTOS.
58
59     http://www.OpenRTOS.com - Real Time Engineers ltd. license FreeRTOS to High
60     Integrity Systems ltd. to sell under the OpenRTOS brand.  Low cost OpenRTOS
61     licenses offer ticketed support, indemnification and commercial middleware.
62
63     http://www.SafeRTOS.com - High Integrity Systems also provide a safety
64     engineered and independently SIL3 certified version for use in safety and
65     mission critical applications that require provable dependability.
66
67     1 tab == 4 spaces!
68 */
69
70 #ifndef MPU_WRAPPERS_H
71 #define MPU_WRAPPERS_H
72
73 /* This file redefines API functions to be called through a wrapper macro, but
74 only for ports that are using the MPU. */
75 #ifdef portUSING_MPU_WRAPPERS
76
77         /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE will be defined when this file is
78         included from queue.c or task.c to prevent it from having an effect within
79         those files. */
80         #ifndef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
81
82                 /*
83                  * Map standard (non MPU) API functions to equivalents that start
84                  * "MPU_".  This will cause the application code to call the MPU_
85                  * version, which wraps the non-MPU version with privilege promoting
86                  * then demoting code, so the kernel code always runs will full
87                  * privileges.
88                  */
89
90                 /* Map standard tasks.h API functions to the MPU equivalents. */
91                 #define xTaskCreate                                                             MPU_xTaskCreate
92                 #define xTaskCreateStatic                                               MPU_xTaskCreateStatic
93                 #define xTaskCreateRestricted                                   MPU_xTaskCreateRestricted
94                 #define vTaskAllocateMPURegions                                 MPU_vTaskAllocateMPURegions
95                 #define vTaskDelete                                                             MPU_vTaskDelete
96                 #define vTaskDelay                                                              MPU_vTaskDelay
97                 #define vTaskDelayUntil                                                 MPU_vTaskDelayUntil
98                 #define xTaskAbortDelay                                                 MPU_xTaskAbortDelay
99                 #define uxTaskPriorityGet                                               MPU_uxTaskPriorityGet
100                 #define eTaskGetState                                                   MPU_eTaskGetState
101                 #define vTaskGetInfo                                                    MPU_vTaskGetInfo
102                 #define vTaskPrioritySet                                                MPU_vTaskPrioritySet
103                 #define vTaskSuspend                                                    MPU_vTaskSuspend
104                 #define vTaskResume                                                             MPU_vTaskResume
105                 #define vTaskSuspendAll                                                 MPU_vTaskSuspendAll
106                 #define xTaskResumeAll                                                  MPU_xTaskResumeAll
107                 #define xTaskGetTickCount                                               MPU_xTaskGetTickCount
108                 #define uxTaskGetNumberOfTasks                                  MPU_uxTaskGetNumberOfTasks
109                 #define pcTaskGetName                                                   MPU_pcTaskGetName
110                 #define xTaskGetHandle                                                  MPU_xTaskGetHandle
111                 #define uxTaskGetStackHighWaterMark                             MPU_uxTaskGetStackHighWaterMark
112                 #define vTaskSetApplicationTaskTag                              MPU_vTaskSetApplicationTaskTag
113                 #define xTaskGetApplicationTaskTag                              MPU_xTaskGetApplicationTaskTag
114                 #define vTaskSetThreadLocalStoragePointer               MPU_vTaskSetThreadLocalStoragePointer
115                 #define pvTaskGetThreadLocalStoragePointer              MPU_pvTaskGetThreadLocalStoragePointer
116                 #define xTaskCallApplicationTaskHook                    MPU_xTaskCallApplicationTaskHook
117                 #define xTaskGetIdleTaskHandle                                  MPU_xTaskGetIdleTaskHandle
118                 #define uxTaskGetSystemState                                    MPU_uxTaskGetSystemState
119                 #define vTaskList                                                               MPU_vTaskList
120                 #define vTaskGetRunTimeStats                                    MPU_vTaskGetRunTimeStats
121                 #define xTaskGenericNotify                                              MPU_xTaskGenericNotify
122                 #define xTaskNotifyWait                                                 MPU_xTaskNotifyWait
123                 #define ulTaskNotifyTake                                                MPU_ulTaskNotifyTake
124                 #define xTaskNotifyStateClear                                   MPU_xTaskNotifyStateClear
125
126                 #define xTaskGetCurrentTaskHandle                               MPU_xTaskGetCurrentTaskHandle
127                 #define vTaskSetTimeOutState                                    MPU_vTaskSetTimeOutState
128                 #define xTaskCheckForTimeOut                                    MPU_xTaskCheckForTimeOut
129                 #define xTaskGetSchedulerState                                  MPU_xTaskGetSchedulerState
130
131                 /* Map standard queue.h API functions to the MPU equivalents. */
132                 #define xQueueGenericSend                                               MPU_xQueueGenericSend
133                 #define xQueueGenericReceive                                    MPU_xQueueGenericReceive
134                 #define uxQueueMessagesWaiting                                  MPU_uxQueueMessagesWaiting
135                 #define uxQueueSpacesAvailable                                  MPU_uxQueueSpacesAvailable
136                 #define vQueueDelete                                                    MPU_vQueueDelete
137                 #define xQueueCreateMutex                                               MPU_xQueueCreateMutex
138                 #define xQueueCreateMutexStatic                                 MPU_xQueueCreateMutexStatic
139                 #define xQueueCreateCountingSemaphore                   MPU_xQueueCreateCountingSemaphore
140                 #define xQueueCreateCountingSemaphoreStatic             MPU_xQueueCreateCountingSemaphoreStatic
141                 #define xQueueGetMutexHolder                                    MPU_xQueueGetMutexHolder
142                 #define xQueueTakeMutexRecursive                                MPU_xQueueTakeMutexRecursive
143                 #define xQueueGiveMutexRecursive                                MPU_xQueueGiveMutexRecursive
144                 #define xQueueGenericCreate                                             MPU_xQueueGenericCreate
145                 #define xQueueGenericCreateStatic                               MPU_xQueueGenericCreateStatic
146                 #define xQueueCreateSet                                                 MPU_xQueueCreateSet
147                 #define xQueueAddToSet                                                  MPU_xQueueAddToSet
148                 #define xQueueRemoveFromSet                                             MPU_xQueueRemoveFromSet
149                 #define xQueueSelectFromSet                                             MPU_xQueueSelectFromSet
150                 #define xQueueGenericReset                                              MPU_xQueueGenericReset
151
152                 #if( configQUEUE_REGISTRY_SIZE > 0 )
153                         #define vQueueAddToRegistry                                             MPU_vQueueAddToRegistry
154                         #define vQueueUnregisterQueue                                   MPU_vQueueUnregisterQueue
155                         #define pcQueueGetName                                                  MPU_pcQueueGetName
156                 #endif
157
158                 /* Map standard timer.h API functions to the MPU equivalents. */
159                 #define xTimerCreate                                                    MPU_xTimerCreate
160                 #define xTimerCreateStatic                                              MPU_xTimerCreateStatic
161                 #define pvTimerGetTimerID                                               MPU_pvTimerGetTimerID
162                 #define vTimerSetTimerID                                                MPU_vTimerSetTimerID
163                 #define xTimerIsTimerActive                                             MPU_xTimerIsTimerActive
164                 #define xTimerGetTimerDaemonTaskHandle                  MPU_xTimerGetTimerDaemonTaskHandle
165                 #define xTimerPendFunctionCall                                  MPU_xTimerPendFunctionCall
166                 #define pcTimerGetName                                                  MPU_pcTimerGetName
167                 #define xTimerGetPeriod                                                 MPU_xTimerGetPeriod
168                 #define xTimerGetExpiryTime                                             MPU_xTimerGetExpiryTime
169                 #define xTimerGenericCommand                                    MPU_xTimerGenericCommand
170
171                 /* Map standard event_group.h API functions to the MPU equivalents. */
172                 #define xEventGroupCreate                                               MPU_xEventGroupCreate
173                 #define xEventGroupCreateStatic                                 MPU_xEventGroupCreateStatic
174                 #define xEventGroupWaitBits                                             MPU_xEventGroupWaitBits
175                 #define xEventGroupClearBits                                    MPU_xEventGroupClearBits
176                 #define xEventGroupSetBits                                              MPU_xEventGroupSetBits
177                 #define xEventGroupSync                                                 MPU_xEventGroupSync
178                 #define vEventGroupDelete                                               MPU_vEventGroupDelete
179
180                 /* Remove the privileged function macro. */
181                 #define PRIVILEGED_FUNCTION
182
183         #else /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
184
185                 /* Ensure API functions go in the privileged execution section. */
186                 #define PRIVILEGED_FUNCTION __attribute__((section("privileged_functions")))
187                 #define PRIVILEGED_DATA __attribute__((section("privileged_data")))
188
189         #endif /* MPU_WRAPPERS_INCLUDED_FROM_API_FILE */
190
191 #else /* portUSING_MPU_WRAPPERS */
192
193         #define PRIVILEGED_FUNCTION
194         #define PRIVILEGED_DATA
195         #define portUSING_MPU_WRAPPERS 0
196
197 #endif /* portUSING_MPU_WRAPPERS */
198
199
200 #endif /* MPU_WRAPPERS_H */
201