2 * FreeRTOS Kernel <DEVELOPMENT BRANCH>
3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
5 * SPDX-License-Identifier: MIT
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:
14 * The above copyright notice and this permission notice shall be included in all
15 * copies or substantial portions of the Software.
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.
24 * https://www.FreeRTOS.org
25 * https://github.com/FreeRTOS
30 * Implementation of the wrapper functions used to raise the processor privilege
31 * before calling a standard FreeRTOS API function.
34 /* Defining MPU_WRAPPERS_INCLUDED_FROM_API_FILE prevents task.h from redefining
35 * all the API functions to use the MPU wrappers. That should only be done when
36 * task.h is included from an application file. */
37 #define MPU_WRAPPERS_INCLUDED_FROM_API_FILE
39 /* Scheduler includes. */
44 #include "event_groups.h"
45 #include "stream_buffer.h"
46 #include "mpu_prototypes.h"
48 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE
49 /*-----------------------------------------------------------*/
51 #if ( portUSING_MPU_WRAPPERS == 1 )
53 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
54 BaseType_t MPU_xTaskCreate( TaskFunction_t pvTaskCode,
55 const char * const pcName,
56 uint16_t usStackDepth,
58 UBaseType_t uxPriority,
59 TaskHandle_t * pxCreatedTask ) /* FREERTOS_SYSTEM_CALL */
63 if( portIS_PRIVILEGED() == pdFALSE )
65 portRAISE_PRIVILEGE();
68 uxPriority = uxPriority & ~( portPRIVILEGE_BIT );
71 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask );
74 portRESET_PRIVILEGE();
79 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask );
84 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */
85 /*-----------------------------------------------------------*/
87 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
88 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
89 const char * const pcName,
90 const uint32_t ulStackDepth,
91 void * const pvParameters,
92 UBaseType_t uxPriority,
93 StackType_t * const puxStackBuffer,
94 StaticTask_t * const pxTaskBuffer ) /* FREERTOS_SYSTEM_CALL */
98 if( portIS_PRIVILEGED() == pdFALSE )
100 portRAISE_PRIVILEGE();
101 portMEMORY_BARRIER();
103 uxPriority = uxPriority & ~( portPRIVILEGE_BIT );
104 portMEMORY_BARRIER();
106 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer );
107 portMEMORY_BARRIER();
109 portRESET_PRIVILEGE();
110 portMEMORY_BARRIER();
114 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer );
119 #endif /* configSUPPORT_STATIC_ALLOCATION */
120 /*-----------------------------------------------------------*/
122 #if ( INCLUDE_vTaskDelete == 1 )
123 void MPU_vTaskDelete( TaskHandle_t pxTaskToDelete ) /* FREERTOS_SYSTEM_CALL */
125 if( portIS_PRIVILEGED() == pdFALSE )
127 portRAISE_PRIVILEGE();
128 portMEMORY_BARRIER();
130 vTaskDelete( pxTaskToDelete );
131 portMEMORY_BARRIER();
133 portRESET_PRIVILEGE();
134 portMEMORY_BARRIER();
138 vTaskDelete( pxTaskToDelete );
141 #endif /* if ( INCLUDE_vTaskDelete == 1 ) */
142 /*-----------------------------------------------------------*/
144 #if ( INCLUDE_xTaskDelayUntil == 1 )
145 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
146 TickType_t xTimeIncrement ) /* FREERTOS_SYSTEM_CALL */
150 if( portIS_PRIVILEGED() == pdFALSE )
152 portRAISE_PRIVILEGE();
153 portMEMORY_BARRIER();
155 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement );
156 portMEMORY_BARRIER();
158 portRESET_PRIVILEGE();
159 portMEMORY_BARRIER();
163 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement );
168 #endif /* if ( INCLUDE_xTaskDelayUntil == 1 ) */
169 /*-----------------------------------------------------------*/
171 #if ( INCLUDE_xTaskAbortDelay == 1 )
172 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
176 if( portIS_PRIVILEGED() == pdFALSE )
178 portRAISE_PRIVILEGE();
179 portMEMORY_BARRIER();
181 xReturn = xTaskAbortDelay( xTask );
182 portMEMORY_BARRIER();
184 portRESET_PRIVILEGE();
185 portMEMORY_BARRIER();
189 xReturn = xTaskAbortDelay( xTask );
194 #endif /* if ( INCLUDE_xTaskAbortDelay == 1 ) */
195 /*-----------------------------------------------------------*/
197 #if ( INCLUDE_vTaskDelay == 1 )
198 void MPU_vTaskDelay( TickType_t xTicksToDelay ) /* FREERTOS_SYSTEM_CALL */
200 if( portIS_PRIVILEGED() == pdFALSE )
202 portRAISE_PRIVILEGE();
203 portMEMORY_BARRIER();
205 vTaskDelay( xTicksToDelay );
206 portMEMORY_BARRIER();
208 portRESET_PRIVILEGE();
209 portMEMORY_BARRIER();
213 vTaskDelay( xTicksToDelay );
216 #endif /* if ( INCLUDE_vTaskDelay == 1 ) */
217 /*-----------------------------------------------------------*/
219 #if ( INCLUDE_uxTaskPriorityGet == 1 )
220 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */
222 UBaseType_t uxReturn;
224 if( portIS_PRIVILEGED() == pdFALSE )
226 portRAISE_PRIVILEGE();
227 portMEMORY_BARRIER();
229 uxReturn = uxTaskPriorityGet( pxTask );
230 portMEMORY_BARRIER();
232 portRESET_PRIVILEGE();
233 portMEMORY_BARRIER();
237 uxReturn = uxTaskPriorityGet( pxTask );
242 #endif /* if ( INCLUDE_uxTaskPriorityGet == 1 ) */
243 /*-----------------------------------------------------------*/
245 #if ( INCLUDE_vTaskPrioritySet == 1 )
246 void MPU_vTaskPrioritySet( TaskHandle_t pxTask,
247 UBaseType_t uxNewPriority ) /* FREERTOS_SYSTEM_CALL */
249 if( portIS_PRIVILEGED() == pdFALSE )
251 portRAISE_PRIVILEGE();
252 portMEMORY_BARRIER();
254 vTaskPrioritySet( pxTask, uxNewPriority );
255 portMEMORY_BARRIER();
257 portRESET_PRIVILEGE();
258 portMEMORY_BARRIER();
262 vTaskPrioritySet( pxTask, uxNewPriority );
265 #endif /* if ( INCLUDE_vTaskPrioritySet == 1 ) */
266 /*-----------------------------------------------------------*/
268 #if ( INCLUDE_eTaskGetState == 1 )
269 eTaskState MPU_eTaskGetState( TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */
273 if( portIS_PRIVILEGED() == pdFALSE )
275 portRAISE_PRIVILEGE();
276 portMEMORY_BARRIER();
278 eReturn = eTaskGetState( pxTask );
279 portMEMORY_BARRIER();
281 portRESET_PRIVILEGE();
282 portMEMORY_BARRIER();
286 eReturn = eTaskGetState( pxTask );
291 #endif /* if ( INCLUDE_eTaskGetState == 1 ) */
292 /*-----------------------------------------------------------*/
294 #if ( configUSE_TRACE_FACILITY == 1 )
295 void MPU_vTaskGetInfo( TaskHandle_t xTask,
296 TaskStatus_t * pxTaskStatus,
297 BaseType_t xGetFreeStackSpace,
298 eTaskState eState ) /* FREERTOS_SYSTEM_CALL */
300 if( portIS_PRIVILEGED() == pdFALSE )
302 portRAISE_PRIVILEGE();
303 portMEMORY_BARRIER();
305 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState );
306 portMEMORY_BARRIER();
308 portRESET_PRIVILEGE();
309 portMEMORY_BARRIER();
313 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState );
316 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
317 /*-----------------------------------------------------------*/
319 #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 )
320 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
322 TaskHandle_t xReturn;
324 if( portIS_PRIVILEGED() == pdFALSE )
326 portRAISE_PRIVILEGE();
327 portMEMORY_BARRIER();
328 xReturn = xTaskGetIdleTaskHandle();
329 portMEMORY_BARRIER();
331 portRESET_PRIVILEGE();
332 portMEMORY_BARRIER();
336 xReturn = xTaskGetIdleTaskHandle();
341 #endif /* if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) */
342 /*-----------------------------------------------------------*/
344 #if ( INCLUDE_vTaskSuspend == 1 )
345 void MPU_vTaskSuspend( TaskHandle_t pxTaskToSuspend ) /* FREERTOS_SYSTEM_CALL */
347 if( portIS_PRIVILEGED() == pdFALSE )
349 portRAISE_PRIVILEGE();
350 portMEMORY_BARRIER();
352 vTaskSuspend( pxTaskToSuspend );
353 portMEMORY_BARRIER();
355 portRESET_PRIVILEGE();
356 portMEMORY_BARRIER();
360 vTaskSuspend( pxTaskToSuspend );
363 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */
364 /*-----------------------------------------------------------*/
366 #if ( INCLUDE_vTaskSuspend == 1 )
367 void MPU_vTaskResume( TaskHandle_t pxTaskToResume ) /* FREERTOS_SYSTEM_CALL */
369 if( portIS_PRIVILEGED() == pdFALSE )
371 portRAISE_PRIVILEGE();
372 portMEMORY_BARRIER();
374 vTaskResume( pxTaskToResume );
375 portMEMORY_BARRIER();
377 portRESET_PRIVILEGE();
378 portMEMORY_BARRIER();
382 vTaskResume( pxTaskToResume );
385 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */
386 /*-----------------------------------------------------------*/
388 void MPU_vTaskSuspendAll( void ) /* FREERTOS_SYSTEM_CALL */
390 if( portIS_PRIVILEGED() == pdFALSE )
392 portRAISE_PRIVILEGE();
393 portMEMORY_BARRIER();
396 portMEMORY_BARRIER();
398 portRESET_PRIVILEGE();
399 portMEMORY_BARRIER();
406 /*-----------------------------------------------------------*/
408 BaseType_t MPU_xTaskResumeAll( void ) /* FREERTOS_SYSTEM_CALL */
412 if( portIS_PRIVILEGED() == pdFALSE )
414 portRAISE_PRIVILEGE();
415 portMEMORY_BARRIER();
417 xReturn = xTaskResumeAll();
418 portMEMORY_BARRIER();
420 portRESET_PRIVILEGE();
421 portMEMORY_BARRIER();
425 xReturn = xTaskResumeAll();
430 /*-----------------------------------------------------------*/
432 TickType_t MPU_xTaskGetTickCount( void ) /* FREERTOS_SYSTEM_CALL */
436 if( portIS_PRIVILEGED() == pdFALSE )
438 portRAISE_PRIVILEGE();
439 portMEMORY_BARRIER();
441 xReturn = xTaskGetTickCount();
442 portMEMORY_BARRIER();
444 portRESET_PRIVILEGE();
445 portMEMORY_BARRIER();
449 xReturn = xTaskGetTickCount();
454 /*-----------------------------------------------------------*/
456 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) /* FREERTOS_SYSTEM_CALL */
458 UBaseType_t uxReturn;
460 if( portIS_PRIVILEGED() == pdFALSE )
462 portRAISE_PRIVILEGE();
463 portMEMORY_BARRIER();
465 uxReturn = uxTaskGetNumberOfTasks();
466 portMEMORY_BARRIER();
468 portRESET_PRIVILEGE();
469 portMEMORY_BARRIER();
473 uxReturn = uxTaskGetNumberOfTasks();
478 /*-----------------------------------------------------------*/
480 char * MPU_pcTaskGetName( TaskHandle_t xTaskToQuery ) /* FREERTOS_SYSTEM_CALL */
484 if( portIS_PRIVILEGED() == pdFALSE )
486 portRAISE_PRIVILEGE();
487 portMEMORY_BARRIER();
489 pcReturn = pcTaskGetName( xTaskToQuery );
490 portMEMORY_BARRIER();
492 portRESET_PRIVILEGE();
493 portMEMORY_BARRIER();
497 pcReturn = pcTaskGetName( xTaskToQuery );
502 /*-----------------------------------------------------------*/
504 #if ( INCLUDE_xTaskGetHandle == 1 )
505 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) /* FREERTOS_SYSTEM_CALL */
507 TaskHandle_t xReturn;
509 if( portIS_PRIVILEGED() == pdFALSE )
511 portRAISE_PRIVILEGE();
512 portMEMORY_BARRIER();
514 xReturn = xTaskGetHandle( pcNameToQuery );
515 portMEMORY_BARRIER();
517 portRESET_PRIVILEGE();
518 portMEMORY_BARRIER();
522 xReturn = xTaskGetHandle( pcNameToQuery );
527 #endif /* if ( INCLUDE_xTaskGetHandle == 1 ) */
528 /*-----------------------------------------------------------*/
530 #if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
531 void MPU_vTaskList( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
533 if( portIS_PRIVILEGED() == pdFALSE )
535 portRAISE_PRIVILEGE();
536 portMEMORY_BARRIER();
538 vTaskList( pcWriteBuffer );
539 portMEMORY_BARRIER();
541 portRESET_PRIVILEGE();
542 portMEMORY_BARRIER();
546 vTaskList( pcWriteBuffer );
549 #endif /* if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
550 /*-----------------------------------------------------------*/
552 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
553 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
555 if( portIS_PRIVILEGED() == pdFALSE )
557 portRAISE_PRIVILEGE();
558 portMEMORY_BARRIER();
560 vTaskGetRunTimeStats( pcWriteBuffer );
561 portMEMORY_BARRIER();
563 portRESET_PRIVILEGE();
564 portMEMORY_BARRIER();
568 vTaskGetRunTimeStats( pcWriteBuffer );
571 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
572 /*-----------------------------------------------------------*/
574 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
575 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */
577 configRUN_TIME_COUNTER_TYPE xReturn;
579 if( portIS_PRIVILEGED() == pdFALSE )
581 portRAISE_PRIVILEGE();
582 portMEMORY_BARRIER();
584 xReturn = ulTaskGetIdleRunTimePercent();
585 portMEMORY_BARRIER();
587 portRESET_PRIVILEGE();
588 portMEMORY_BARRIER();
592 xReturn = ulTaskGetIdleRunTimePercent();
597 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
598 /*-----------------------------------------------------------*/
600 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
601 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */
603 configRUN_TIME_COUNTER_TYPE xReturn;
605 if( portIS_PRIVILEGED() == pdFALSE )
607 portRAISE_PRIVILEGE();
608 portMEMORY_BARRIER();
610 xReturn = ulTaskGetIdleRunTimeCounter();
611 portMEMORY_BARRIER();
613 portRESET_PRIVILEGE();
614 portMEMORY_BARRIER();
618 xReturn = ulTaskGetIdleRunTimeCounter();
623 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
624 /*-----------------------------------------------------------*/
626 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
627 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
628 TaskHookFunction_t pxTagValue ) /* FREERTOS_SYSTEM_CALL */
630 if( portIS_PRIVILEGED() == pdFALSE )
632 portRAISE_PRIVILEGE();
633 portMEMORY_BARRIER();
635 vTaskSetApplicationTaskTag( xTask, pxTagValue );
636 portMEMORY_BARRIER();
638 portRESET_PRIVILEGE();
639 portMEMORY_BARRIER();
643 vTaskSetApplicationTaskTag( xTask, pxTagValue );
646 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
647 /*-----------------------------------------------------------*/
649 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
650 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
652 TaskHookFunction_t xReturn;
654 if( portIS_PRIVILEGED() == pdFALSE )
656 portRAISE_PRIVILEGE();
657 portMEMORY_BARRIER();
659 xReturn = xTaskGetApplicationTaskTag( xTask );
660 portMEMORY_BARRIER();
662 portRESET_PRIVILEGE();
663 portMEMORY_BARRIER();
667 xReturn = xTaskGetApplicationTaskTag( xTask );
672 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
673 /*-----------------------------------------------------------*/
675 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
676 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
678 void * pvValue ) /* FREERTOS_SYSTEM_CALL */
680 if( portIS_PRIVILEGED() == pdFALSE )
682 portRAISE_PRIVILEGE();
683 portMEMORY_BARRIER();
685 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
686 portMEMORY_BARRIER();
688 portRESET_PRIVILEGE();
689 portMEMORY_BARRIER();
693 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
696 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
697 /*-----------------------------------------------------------*/
699 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
700 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
701 BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */
705 if( portIS_PRIVILEGED() == pdFALSE )
707 portRAISE_PRIVILEGE();
708 portMEMORY_BARRIER();
710 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
711 portMEMORY_BARRIER();
713 portRESET_PRIVILEGE();
714 portMEMORY_BARRIER();
718 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
723 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
724 /*-----------------------------------------------------------*/
726 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
727 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
728 void * pvParameter ) /* FREERTOS_SYSTEM_CALL */
732 if( portIS_PRIVILEGED() == pdFALSE )
734 portRAISE_PRIVILEGE();
735 portMEMORY_BARRIER();
737 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
738 portMEMORY_BARRIER();
740 portRESET_PRIVILEGE();
741 portMEMORY_BARRIER();
745 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
750 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
751 /*-----------------------------------------------------------*/
753 #if ( configUSE_TRACE_FACILITY == 1 )
754 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * pxTaskStatusArray,
755 UBaseType_t uxArraySize,
756 configRUN_TIME_COUNTER_TYPE * pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */
758 UBaseType_t uxReturn;
760 if( portIS_PRIVILEGED() == pdFALSE )
762 portRAISE_PRIVILEGE();
763 portMEMORY_BARRIER();
765 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
766 portMEMORY_BARRIER();
768 portRESET_PRIVILEGE();
769 portMEMORY_BARRIER();
773 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
778 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
779 /*-----------------------------------------------------------*/
781 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) /* FREERTOS_SYSTEM_CALL */
785 if( portIS_PRIVILEGED() == pdFALSE )
787 portRAISE_PRIVILEGE();
788 portMEMORY_BARRIER();
790 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
791 portMEMORY_BARRIER();
793 portRESET_PRIVILEGE();
794 portMEMORY_BARRIER();
798 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
803 /*-----------------------------------------------------------*/
805 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )
806 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
808 UBaseType_t uxReturn;
810 if( portIS_PRIVILEGED() == pdFALSE )
812 portRAISE_PRIVILEGE();
813 portMEMORY_BARRIER();
815 uxReturn = uxTaskGetStackHighWaterMark( xTask );
816 portMEMORY_BARRIER();
818 portRESET_PRIVILEGE();
819 portMEMORY_BARRIER();
823 uxReturn = uxTaskGetStackHighWaterMark( xTask );
828 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */
829 /*-----------------------------------------------------------*/
831 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 )
832 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
834 configSTACK_DEPTH_TYPE uxReturn;
836 if( portIS_PRIVILEGED() == pdFALSE )
838 portRAISE_PRIVILEGE();
839 portMEMORY_BARRIER();
841 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
842 portMEMORY_BARRIER();
844 portRESET_PRIVILEGE();
845 portMEMORY_BARRIER();
849 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
854 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */
855 /*-----------------------------------------------------------*/
857 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) )
858 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
860 TaskHandle_t xReturn;
862 if( portIS_PRIVILEGED() == pdFALSE )
864 portRAISE_PRIVILEGE();
865 portMEMORY_BARRIER();
866 xReturn = xTaskGetCurrentTaskHandle();
867 portMEMORY_BARRIER();
869 portRESET_PRIVILEGE();
870 portMEMORY_BARRIER();
874 xReturn = xTaskGetCurrentTaskHandle();
879 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */
880 /*-----------------------------------------------------------*/
882 #if ( INCLUDE_xTaskGetSchedulerState == 1 )
883 BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */
887 if( portIS_PRIVILEGED() == pdFALSE )
889 portRAISE_PRIVILEGE();
890 portMEMORY_BARRIER();
892 xReturn = xTaskGetSchedulerState();
893 portMEMORY_BARRIER();
895 portRESET_PRIVILEGE();
896 portMEMORY_BARRIER();
900 xReturn = xTaskGetSchedulerState();
905 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */
906 /*-----------------------------------------------------------*/
908 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */
910 if( portIS_PRIVILEGED() == pdFALSE )
912 portRAISE_PRIVILEGE();
913 portMEMORY_BARRIER();
915 vTaskSetTimeOutState( pxTimeOut );
916 portMEMORY_BARRIER();
918 portRESET_PRIVILEGE();
919 portMEMORY_BARRIER();
923 vTaskSetTimeOutState( pxTimeOut );
926 /*-----------------------------------------------------------*/
928 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
929 TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */
933 if( portIS_PRIVILEGED() == pdFALSE )
935 portRAISE_PRIVILEGE();
936 portMEMORY_BARRIER();
938 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
939 portMEMORY_BARRIER();
941 portRESET_PRIVILEGE();
942 portMEMORY_BARRIER();
946 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
951 /*-----------------------------------------------------------*/
953 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
954 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
955 UBaseType_t uxIndexToNotify,
957 eNotifyAction eAction,
958 uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */
962 if( portIS_PRIVILEGED() == pdFALSE )
964 portRAISE_PRIVILEGE();
965 portMEMORY_BARRIER();
967 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
968 portMEMORY_BARRIER();
970 portRESET_PRIVILEGE();
971 portMEMORY_BARRIER();
975 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
980 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
981 /*-----------------------------------------------------------*/
983 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
984 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
985 uint32_t ulBitsToClearOnEntry,
986 uint32_t ulBitsToClearOnExit,
987 uint32_t * pulNotificationValue,
988 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
992 if( portIS_PRIVILEGED() == pdFALSE )
994 portRAISE_PRIVILEGE();
995 portMEMORY_BARRIER();
997 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
998 portMEMORY_BARRIER();
1000 portRESET_PRIVILEGE();
1001 portMEMORY_BARRIER();
1005 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
1010 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1011 /*-----------------------------------------------------------*/
1013 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1014 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
1015 BaseType_t xClearCountOnExit,
1016 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1020 if( portIS_PRIVILEGED() == pdFALSE )
1022 portRAISE_PRIVILEGE();
1023 portMEMORY_BARRIER();
1025 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1026 portMEMORY_BARRIER();
1028 portRESET_PRIVILEGE();
1029 portMEMORY_BARRIER();
1033 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1038 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1039 /*-----------------------------------------------------------*/
1041 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1042 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
1043 UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */
1047 if( portIS_PRIVILEGED() == pdFALSE )
1049 portRAISE_PRIVILEGE();
1050 portMEMORY_BARRIER();
1052 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1053 portMEMORY_BARRIER();
1055 portRESET_PRIVILEGE();
1056 portMEMORY_BARRIER();
1060 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1065 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1066 /*-----------------------------------------------------------*/
1068 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1069 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
1070 UBaseType_t uxIndexToClear,
1071 uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */
1075 if( portIS_PRIVILEGED() == pdFALSE )
1077 portRAISE_PRIVILEGE();
1078 portMEMORY_BARRIER();
1080 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1081 portMEMORY_BARRIER();
1083 portRESET_PRIVILEGE();
1084 portMEMORY_BARRIER();
1088 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1093 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1094 /*-----------------------------------------------------------*/
1096 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1097 QueueHandle_t MPU_xQueueGenericCreate( UBaseType_t uxQueueLength,
1098 UBaseType_t uxItemSize,
1099 uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1101 QueueHandle_t xReturn;
1103 if( portIS_PRIVILEGED() == pdFALSE )
1105 portRAISE_PRIVILEGE();
1106 portMEMORY_BARRIER();
1108 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1109 portMEMORY_BARRIER();
1111 portRESET_PRIVILEGE();
1112 portMEMORY_BARRIER();
1116 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1121 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1122 /*-----------------------------------------------------------*/
1124 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1125 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
1126 const UBaseType_t uxItemSize,
1127 uint8_t * pucQueueStorage,
1128 StaticQueue_t * pxStaticQueue,
1129 const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1131 QueueHandle_t xReturn;
1133 if( portIS_PRIVILEGED() == pdFALSE )
1135 portRAISE_PRIVILEGE();
1136 portMEMORY_BARRIER();
1138 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1139 portMEMORY_BARRIER();
1141 portRESET_PRIVILEGE();
1142 portMEMORY_BARRIER();
1146 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1151 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
1152 /*-----------------------------------------------------------*/
1154 BaseType_t MPU_xQueueGenericReset( QueueHandle_t pxQueue,
1155 BaseType_t xNewQueue ) /* FREERTOS_SYSTEM_CALL */
1159 if( portIS_PRIVILEGED() == pdFALSE )
1161 portRAISE_PRIVILEGE();
1162 portMEMORY_BARRIER();
1164 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1165 portMEMORY_BARRIER();
1167 portRESET_PRIVILEGE();
1168 portMEMORY_BARRIER();
1172 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1177 /*-----------------------------------------------------------*/
1179 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
1180 const void * const pvItemToQueue,
1181 TickType_t xTicksToWait,
1182 BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */
1186 if( portIS_PRIVILEGED() == pdFALSE )
1188 portRAISE_PRIVILEGE();
1189 portMEMORY_BARRIER();
1191 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1192 portMEMORY_BARRIER();
1194 portRESET_PRIVILEGE();
1195 portMEMORY_BARRIER();
1199 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1204 /*-----------------------------------------------------------*/
1206 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t pxQueue ) /* FREERTOS_SYSTEM_CALL */
1208 UBaseType_t uxReturn;
1210 if( portIS_PRIVILEGED() == pdFALSE )
1212 portRAISE_PRIVILEGE();
1213 portMEMORY_BARRIER();
1215 uxReturn = uxQueueMessagesWaiting( pxQueue );
1216 portMEMORY_BARRIER();
1218 portRESET_PRIVILEGE();
1219 portMEMORY_BARRIER();
1223 uxReturn = uxQueueMessagesWaiting( pxQueue );
1228 /*-----------------------------------------------------------*/
1230 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1232 UBaseType_t uxReturn;
1234 if( portIS_PRIVILEGED() == pdFALSE )
1236 portRAISE_PRIVILEGE();
1237 portMEMORY_BARRIER();
1239 uxReturn = uxQueueSpacesAvailable( xQueue );
1240 portMEMORY_BARRIER();
1242 portRESET_PRIVILEGE();
1243 portMEMORY_BARRIER();
1247 uxReturn = uxQueueSpacesAvailable( xQueue );
1252 /*-----------------------------------------------------------*/
1254 BaseType_t MPU_xQueueReceive( QueueHandle_t pxQueue,
1255 void * const pvBuffer,
1256 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1260 if( portIS_PRIVILEGED() == pdFALSE )
1262 portRAISE_PRIVILEGE();
1263 portMEMORY_BARRIER();
1265 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1266 portMEMORY_BARRIER();
1268 portRESET_PRIVILEGE();
1269 portMEMORY_BARRIER();
1273 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1278 /*-----------------------------------------------------------*/
1280 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
1281 void * const pvBuffer,
1282 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1286 if( portIS_PRIVILEGED() == pdFALSE )
1288 portRAISE_PRIVILEGE();
1289 portMEMORY_BARRIER();
1291 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1292 portMEMORY_BARRIER();
1294 portRESET_PRIVILEGE();
1295 portMEMORY_BARRIER();
1299 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1304 /*-----------------------------------------------------------*/
1306 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
1307 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1311 if( portIS_PRIVILEGED() == pdFALSE )
1313 portRAISE_PRIVILEGE();
1314 portMEMORY_BARRIER();
1316 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1317 portMEMORY_BARRIER();
1319 portRESET_PRIVILEGE();
1320 portMEMORY_BARRIER();
1324 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1329 /*-----------------------------------------------------------*/
1331 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
1332 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */
1336 if( portIS_PRIVILEGED() == pdFALSE )
1338 portRAISE_PRIVILEGE();
1339 portMEMORY_BARRIER();
1341 xReturn = xQueueGetMutexHolder( xSemaphore );
1342 portMEMORY_BARRIER();
1344 portRESET_PRIVILEGE();
1345 portMEMORY_BARRIER();
1349 xReturn = xQueueGetMutexHolder( xSemaphore );
1354 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */
1355 /*-----------------------------------------------------------*/
1357 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1358 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1360 QueueHandle_t xReturn;
1362 if( portIS_PRIVILEGED() == pdFALSE )
1364 portRAISE_PRIVILEGE();
1365 portMEMORY_BARRIER();
1367 xReturn = xQueueCreateMutex( ucQueueType );
1368 portMEMORY_BARRIER();
1370 portRESET_PRIVILEGE();
1371 portMEMORY_BARRIER();
1375 xReturn = xQueueCreateMutex( ucQueueType );
1380 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1381 /*-----------------------------------------------------------*/
1383 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1384 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
1385 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1387 QueueHandle_t xReturn;
1389 if( portIS_PRIVILEGED() == pdFALSE )
1391 portRAISE_PRIVILEGE();
1392 portMEMORY_BARRIER();
1394 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1395 portMEMORY_BARRIER();
1397 portRESET_PRIVILEGE();
1398 portMEMORY_BARRIER();
1402 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1407 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1408 /*-----------------------------------------------------------*/
1410 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1411 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue,
1412 UBaseType_t uxInitialCount ) /* FREERTOS_SYSTEM_CALL */
1414 QueueHandle_t xReturn;
1416 if( portIS_PRIVILEGED() == pdFALSE )
1418 portRAISE_PRIVILEGE();
1419 portMEMORY_BARRIER();
1421 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1422 portMEMORY_BARRIER();
1424 portRESET_PRIVILEGE();
1425 portMEMORY_BARRIER();
1429 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1434 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1435 /*-----------------------------------------------------------*/
1437 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1439 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
1440 const UBaseType_t uxInitialCount,
1441 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1443 QueueHandle_t xReturn;
1445 if( portIS_PRIVILEGED() == pdFALSE )
1447 portRAISE_PRIVILEGE();
1448 portMEMORY_BARRIER();
1450 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1451 portMEMORY_BARRIER();
1453 portRESET_PRIVILEGE();
1454 portMEMORY_BARRIER();
1458 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1463 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1464 /*-----------------------------------------------------------*/
1466 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1467 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
1468 TickType_t xBlockTime ) /* FREERTOS_SYSTEM_CALL */
1472 if( portIS_PRIVILEGED() == pdFALSE )
1474 portRAISE_PRIVILEGE();
1475 portMEMORY_BARRIER();
1477 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1478 portMEMORY_BARRIER();
1480 portRESET_PRIVILEGE();
1481 portMEMORY_BARRIER();
1485 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1490 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1491 /*-----------------------------------------------------------*/
1493 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1494 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex ) /* FREERTOS_SYSTEM_CALL */
1498 if( portIS_PRIVILEGED() == pdFALSE )
1500 portRAISE_PRIVILEGE();
1501 portMEMORY_BARRIER();
1503 xReturn = xQueueGiveMutexRecursive( xMutex );
1504 portMEMORY_BARRIER();
1506 portRESET_PRIVILEGE();
1507 portMEMORY_BARRIER();
1511 xReturn = xQueueGiveMutexRecursive( xMutex );
1516 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1517 /*-----------------------------------------------------------*/
1519 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1520 QueueSetHandle_t MPU_xQueueCreateSet( UBaseType_t uxEventQueueLength ) /* FREERTOS_SYSTEM_CALL */
1522 QueueSetHandle_t xReturn;
1524 if( portIS_PRIVILEGED() == pdFALSE )
1526 portRAISE_PRIVILEGE();
1527 portMEMORY_BARRIER();
1529 xReturn = xQueueCreateSet( uxEventQueueLength );
1530 portMEMORY_BARRIER();
1532 portRESET_PRIVILEGE();
1533 portMEMORY_BARRIER();
1537 xReturn = xQueueCreateSet( uxEventQueueLength );
1542 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1543 /*-----------------------------------------------------------*/
1545 #if ( configUSE_QUEUE_SETS == 1 )
1546 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
1547 TickType_t xBlockTimeTicks ) /* FREERTOS_SYSTEM_CALL */
1549 QueueSetMemberHandle_t xReturn;
1551 if( portIS_PRIVILEGED() == pdFALSE )
1553 portRAISE_PRIVILEGE();
1554 portMEMORY_BARRIER();
1556 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1557 portMEMORY_BARRIER();
1559 portRESET_PRIVILEGE();
1560 portMEMORY_BARRIER();
1564 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1569 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1570 /*-----------------------------------------------------------*/
1572 #if ( configUSE_QUEUE_SETS == 1 )
1573 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1574 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1578 if( portIS_PRIVILEGED() == pdFALSE )
1580 portRAISE_PRIVILEGE();
1581 portMEMORY_BARRIER();
1583 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1584 portMEMORY_BARRIER();
1586 portRESET_PRIVILEGE();
1587 portMEMORY_BARRIER();
1591 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1596 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1597 /*-----------------------------------------------------------*/
1599 #if ( configUSE_QUEUE_SETS == 1 )
1600 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1601 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1605 if( portIS_PRIVILEGED() == pdFALSE )
1607 portRAISE_PRIVILEGE();
1608 portMEMORY_BARRIER();
1610 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1611 portMEMORY_BARRIER();
1613 portRESET_PRIVILEGE();
1614 portMEMORY_BARRIER();
1618 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1623 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1624 /*-----------------------------------------------------------*/
1626 #if configQUEUE_REGISTRY_SIZE > 0
1627 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
1628 const char * pcName ) /* FREERTOS_SYSTEM_CALL */
1630 if( portIS_PRIVILEGED() == pdFALSE )
1632 portRAISE_PRIVILEGE();
1633 portMEMORY_BARRIER();
1635 vQueueAddToRegistry( xQueue, pcName );
1636 portMEMORY_BARRIER();
1638 portRESET_PRIVILEGE();
1639 portMEMORY_BARRIER();
1643 vQueueAddToRegistry( xQueue, pcName );
1646 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1647 /*-----------------------------------------------------------*/
1649 #if configQUEUE_REGISTRY_SIZE > 0
1650 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1652 if( portIS_PRIVILEGED() == pdFALSE )
1654 portRAISE_PRIVILEGE();
1655 portMEMORY_BARRIER();
1657 vQueueUnregisterQueue( xQueue );
1658 portMEMORY_BARRIER();
1660 portRESET_PRIVILEGE();
1661 portMEMORY_BARRIER();
1665 vQueueUnregisterQueue( xQueue );
1668 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1669 /*-----------------------------------------------------------*/
1671 #if configQUEUE_REGISTRY_SIZE > 0
1672 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1674 const char * pcReturn;
1676 if( portIS_PRIVILEGED() == pdFALSE )
1678 portRAISE_PRIVILEGE();
1679 portMEMORY_BARRIER();
1681 pcReturn = pcQueueGetName( xQueue );
1682 portMEMORY_BARRIER();
1684 portRESET_PRIVILEGE();
1685 portMEMORY_BARRIER();
1689 pcReturn = pcQueueGetName( xQueue );
1694 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1695 /*-----------------------------------------------------------*/
1697 void MPU_vQueueDelete( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1699 if( portIS_PRIVILEGED() == pdFALSE )
1701 portRAISE_PRIVILEGE();
1702 portMEMORY_BARRIER();
1704 vQueueDelete( xQueue );
1705 portMEMORY_BARRIER();
1707 portRESET_PRIVILEGE();
1708 portMEMORY_BARRIER();
1712 vQueueDelete( xQueue );
1715 /*-----------------------------------------------------------*/
1717 #if ( configUSE_TIMERS == 1 )
1718 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1722 if( portIS_PRIVILEGED() == pdFALSE )
1724 portRAISE_PRIVILEGE();
1725 portMEMORY_BARRIER();
1727 pvReturn = pvTimerGetTimerID( xTimer );
1728 portMEMORY_BARRIER();
1730 portRESET_PRIVILEGE();
1731 portMEMORY_BARRIER();
1735 pvReturn = pvTimerGetTimerID( xTimer );
1740 #endif /* if ( configUSE_TIMERS == 1 ) */
1741 /*-----------------------------------------------------------*/
1743 #if ( configUSE_TIMERS == 1 )
1744 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
1745 void * pvNewID ) /* FREERTOS_SYSTEM_CALL */
1747 if( portIS_PRIVILEGED() == pdFALSE )
1749 portRAISE_PRIVILEGE();
1750 portMEMORY_BARRIER();
1752 vTimerSetTimerID( xTimer, pvNewID );
1753 portMEMORY_BARRIER();
1755 portRESET_PRIVILEGE();
1756 portMEMORY_BARRIER();
1760 vTimerSetTimerID( xTimer, pvNewID );
1763 #endif /* if ( configUSE_TIMERS == 1 ) */
1764 /*-----------------------------------------------------------*/
1766 #if ( configUSE_TIMERS == 1 )
1767 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1771 if( portIS_PRIVILEGED() == pdFALSE )
1773 portRAISE_PRIVILEGE();
1774 portMEMORY_BARRIER();
1776 xReturn = xTimerIsTimerActive( xTimer );
1777 portMEMORY_BARRIER();
1779 portRESET_PRIVILEGE();
1780 portMEMORY_BARRIER();
1784 xReturn = xTimerIsTimerActive( xTimer );
1789 #endif /* if ( configUSE_TIMERS == 1 ) */
1790 /*-----------------------------------------------------------*/
1792 #if ( configUSE_TIMERS == 1 )
1793 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
1795 TaskHandle_t xReturn;
1797 if( portIS_PRIVILEGED() == pdFALSE )
1799 portRAISE_PRIVILEGE();
1800 portMEMORY_BARRIER();
1802 xReturn = xTimerGetTimerDaemonTaskHandle();
1803 portMEMORY_BARRIER();
1805 portRESET_PRIVILEGE();
1806 portMEMORY_BARRIER();
1810 xReturn = xTimerGetTimerDaemonTaskHandle();
1815 #endif /* if ( configUSE_TIMERS == 1 ) */
1816 /*-----------------------------------------------------------*/
1818 #if ( configUSE_TIMERS == 1 )
1819 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
1820 const UBaseType_t uxAutoReload ) /* FREERTOS_SYSTEM_CALL */
1822 if( portIS_PRIVILEGED() == pdFALSE )
1824 portRAISE_PRIVILEGE();
1825 portMEMORY_BARRIER();
1827 vTimerSetReloadMode( xTimer, uxAutoReload );
1828 portMEMORY_BARRIER();
1830 portRESET_PRIVILEGE();
1831 portMEMORY_BARRIER();
1835 vTimerSetReloadMode( xTimer, uxAutoReload );
1838 #endif /* if ( configUSE_TIMERS == 1 ) */
1839 /*-----------------------------------------------------------*/
1841 #if ( configUSE_TIMERS == 1 )
1842 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer )
1844 UBaseType_t uxReturn;
1846 if( portIS_PRIVILEGED() == pdFALSE )
1848 portRAISE_PRIVILEGE();
1849 portMEMORY_BARRIER();
1851 uxReturn = uxTimerGetReloadMode( xTimer );
1852 portMEMORY_BARRIER();
1854 portRESET_PRIVILEGE();
1855 portMEMORY_BARRIER();
1859 uxReturn = uxTimerGetReloadMode( xTimer );
1864 #endif /* if ( configUSE_TIMERS == 1 ) */
1865 /*-----------------------------------------------------------*/
1867 #if ( configUSE_TIMERS == 1 )
1868 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1870 const char * pcReturn;
1872 if( portIS_PRIVILEGED() == pdFALSE )
1874 portRAISE_PRIVILEGE();
1875 portMEMORY_BARRIER();
1877 pcReturn = pcTimerGetName( xTimer );
1878 portMEMORY_BARRIER();
1880 portRESET_PRIVILEGE();
1881 portMEMORY_BARRIER();
1885 pcReturn = pcTimerGetName( xTimer );
1890 #endif /* if ( configUSE_TIMERS == 1 ) */
1891 /*-----------------------------------------------------------*/
1893 #if ( configUSE_TIMERS == 1 )
1894 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1898 if( portIS_PRIVILEGED() == pdFALSE )
1900 portRAISE_PRIVILEGE();
1901 portMEMORY_BARRIER();
1903 xReturn = xTimerGetPeriod( xTimer );
1904 portMEMORY_BARRIER();
1906 portRESET_PRIVILEGE();
1907 portMEMORY_BARRIER();
1911 xReturn = xTimerGetPeriod( xTimer );
1916 #endif /* if ( configUSE_TIMERS == 1 ) */
1917 /*-----------------------------------------------------------*/
1919 #if ( configUSE_TIMERS == 1 )
1920 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1924 if( portIS_PRIVILEGED() == pdFALSE )
1926 portRAISE_PRIVILEGE();
1927 portMEMORY_BARRIER();
1929 xReturn = xTimerGetExpiryTime( xTimer );
1930 portMEMORY_BARRIER();
1932 portRESET_PRIVILEGE();
1933 portMEMORY_BARRIER();
1937 xReturn = xTimerGetExpiryTime( xTimer );
1942 #endif /* if ( configUSE_TIMERS == 1 ) */
1943 /*-----------------------------------------------------------*/
1945 #if ( configUSE_TIMERS == 1 )
1946 BaseType_t MPU_xTimerGenericCommand( TimerHandle_t xTimer,
1947 const BaseType_t xCommandID,
1948 const TickType_t xOptionalValue,
1949 BaseType_t * const pxHigherPriorityTaskWoken,
1950 const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1954 if( portIS_PRIVILEGED() == pdFALSE )
1956 portRAISE_PRIVILEGE();
1957 portMEMORY_BARRIER();
1959 xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1960 portMEMORY_BARRIER();
1962 portRESET_PRIVILEGE();
1963 portMEMORY_BARRIER();
1967 xReturn = xTimerGenericCommand( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1972 #endif /* if ( configUSE_TIMERS == 1 ) */
1973 /*-----------------------------------------------------------*/
1975 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1976 EventGroupHandle_t MPU_xEventGroupCreate( void ) /* FREERTOS_SYSTEM_CALL */
1978 EventGroupHandle_t xReturn;
1980 if( portIS_PRIVILEGED() == pdFALSE )
1982 portRAISE_PRIVILEGE();
1983 portMEMORY_BARRIER();
1985 xReturn = xEventGroupCreate();
1986 portMEMORY_BARRIER();
1988 portRESET_PRIVILEGE();
1989 portMEMORY_BARRIER();
1993 xReturn = xEventGroupCreate();
1998 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1999 /*-----------------------------------------------------------*/
2001 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
2002 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) /* FREERTOS_SYSTEM_CALL */
2004 EventGroupHandle_t xReturn;
2006 if( portIS_PRIVILEGED() == pdFALSE )
2008 portRAISE_PRIVILEGE();
2009 portMEMORY_BARRIER();
2011 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2012 portMEMORY_BARRIER();
2014 portRESET_PRIVILEGE();
2015 portMEMORY_BARRIER();
2019 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2024 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
2025 /*-----------------------------------------------------------*/
2027 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
2028 const EventBits_t uxBitsToWaitFor,
2029 const BaseType_t xClearOnExit,
2030 const BaseType_t xWaitForAllBits,
2031 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2033 EventBits_t xReturn;
2035 if( portIS_PRIVILEGED() == pdFALSE )
2037 portRAISE_PRIVILEGE();
2038 portMEMORY_BARRIER();
2040 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2041 portMEMORY_BARRIER();
2043 portRESET_PRIVILEGE();
2044 portMEMORY_BARRIER();
2048 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2053 /*-----------------------------------------------------------*/
2055 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
2056 const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */
2058 EventBits_t xReturn;
2060 if( portIS_PRIVILEGED() == pdFALSE )
2062 portRAISE_PRIVILEGE();
2063 portMEMORY_BARRIER();
2065 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2066 portMEMORY_BARRIER();
2068 portRESET_PRIVILEGE();
2069 portMEMORY_BARRIER();
2073 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2078 /*-----------------------------------------------------------*/
2080 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
2081 const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */
2083 EventBits_t xReturn;
2085 if( portIS_PRIVILEGED() == pdFALSE )
2087 portRAISE_PRIVILEGE();
2088 portMEMORY_BARRIER();
2090 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2091 portMEMORY_BARRIER();
2093 portRESET_PRIVILEGE();
2094 portMEMORY_BARRIER();
2098 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2103 /*-----------------------------------------------------------*/
2105 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
2106 const EventBits_t uxBitsToSet,
2107 const EventBits_t uxBitsToWaitFor,
2108 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2110 EventBits_t xReturn;
2112 if( portIS_PRIVILEGED() == pdFALSE )
2114 portRAISE_PRIVILEGE();
2115 portMEMORY_BARRIER();
2117 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2118 portMEMORY_BARRIER();
2120 portRESET_PRIVILEGE();
2121 portMEMORY_BARRIER();
2125 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2130 /*-----------------------------------------------------------*/
2132 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) /* FREERTOS_SYSTEM_CALL */
2134 if( portIS_PRIVILEGED() == pdFALSE )
2136 portRAISE_PRIVILEGE();
2137 portMEMORY_BARRIER();
2139 vEventGroupDelete( xEventGroup );
2140 portMEMORY_BARRIER();
2142 portRESET_PRIVILEGE();
2143 portMEMORY_BARRIER();
2147 vEventGroupDelete( xEventGroup );
2150 /*-----------------------------------------------------------*/
2152 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
2153 const void * pvTxData,
2154 size_t xDataLengthBytes,
2155 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2159 if( portIS_PRIVILEGED() == pdFALSE )
2161 portRAISE_PRIVILEGE();
2162 portMEMORY_BARRIER();
2164 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2165 portMEMORY_BARRIER();
2167 portRESET_PRIVILEGE();
2168 portMEMORY_BARRIER();
2172 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2177 /*-----------------------------------------------------------*/
2179 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2183 if( portIS_PRIVILEGED() == pdFALSE )
2185 portRAISE_PRIVILEGE();
2186 portMEMORY_BARRIER();
2188 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2189 portMEMORY_BARRIER();
2191 portRESET_PRIVILEGE();
2192 portMEMORY_BARRIER();
2196 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2201 /*-----------------------------------------------------------*/
2203 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
2205 size_t xBufferLengthBytes,
2206 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2210 if( portIS_PRIVILEGED() == pdFALSE )
2212 portRAISE_PRIVILEGE();
2213 portMEMORY_BARRIER();
2215 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2216 portMEMORY_BARRIER();
2218 portRESET_PRIVILEGE();
2219 portMEMORY_BARRIER();
2223 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2228 /*-----------------------------------------------------------*/
2230 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2232 if( portIS_PRIVILEGED() == pdFALSE )
2234 portRAISE_PRIVILEGE();
2235 portMEMORY_BARRIER();
2237 vStreamBufferDelete( xStreamBuffer );
2238 portMEMORY_BARRIER();
2240 portRESET_PRIVILEGE();
2241 portMEMORY_BARRIER();
2245 vStreamBufferDelete( xStreamBuffer );
2248 /*-----------------------------------------------------------*/
2250 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2254 if( portIS_PRIVILEGED() == pdFALSE )
2256 portRAISE_PRIVILEGE();
2257 portMEMORY_BARRIER();
2259 xReturn = xStreamBufferIsFull( xStreamBuffer );
2260 portMEMORY_BARRIER();
2262 portRESET_PRIVILEGE();
2263 portMEMORY_BARRIER();
2267 xReturn = xStreamBufferIsFull( xStreamBuffer );
2272 /*-----------------------------------------------------------*/
2274 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2278 if( portIS_PRIVILEGED() == pdFALSE )
2280 portRAISE_PRIVILEGE();
2281 portMEMORY_BARRIER();
2283 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2284 portMEMORY_BARRIER();
2286 portRESET_PRIVILEGE();
2287 portMEMORY_BARRIER();
2291 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2296 /*-----------------------------------------------------------*/
2298 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2302 if( portIS_PRIVILEGED() == pdFALSE )
2304 portRAISE_PRIVILEGE();
2305 portMEMORY_BARRIER();
2307 xReturn = xStreamBufferReset( xStreamBuffer );
2308 portMEMORY_BARRIER();
2310 portRESET_PRIVILEGE();
2311 portMEMORY_BARRIER();
2315 xReturn = xStreamBufferReset( xStreamBuffer );
2320 /*-----------------------------------------------------------*/
2322 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2326 if( portIS_PRIVILEGED() == pdFALSE )
2328 portRAISE_PRIVILEGE();
2329 portMEMORY_BARRIER();
2330 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2331 portMEMORY_BARRIER();
2333 portRESET_PRIVILEGE();
2334 portMEMORY_BARRIER();
2338 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2343 /*-----------------------------------------------------------*/
2345 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2349 if( portIS_PRIVILEGED() == pdFALSE )
2351 portRAISE_PRIVILEGE();
2352 portMEMORY_BARRIER();
2354 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2355 portMEMORY_BARRIER();
2357 portRESET_PRIVILEGE();
2358 portMEMORY_BARRIER();
2362 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2367 /*-----------------------------------------------------------*/
2369 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
2370 size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */
2374 if( portIS_PRIVILEGED() == pdFALSE )
2376 portRAISE_PRIVILEGE();
2377 portMEMORY_BARRIER();
2379 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2380 portMEMORY_BARRIER();
2382 portRESET_PRIVILEGE();
2383 portMEMORY_BARRIER();
2387 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2392 /*-----------------------------------------------------------*/
2394 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
2395 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
2396 size_t xTriggerLevelBytes,
2397 BaseType_t xIsMessageBuffer,
2398 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2399 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2401 StreamBufferHandle_t xReturn;
2404 * Streambuffer application level callback functionality is disabled for MPU
2407 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2408 ( pxReceiveCompletedCallback == NULL ) );
2410 if( ( pxSendCompletedCallback == NULL ) &&
2411 ( pxReceiveCompletedCallback == NULL ) )
2413 if( portIS_PRIVILEGED() == pdFALSE )
2415 portRAISE_PRIVILEGE();
2416 portMEMORY_BARRIER();
2418 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2423 portMEMORY_BARRIER();
2425 portRESET_PRIVILEGE();
2426 portMEMORY_BARRIER();
2430 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2439 traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer );
2445 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */
2446 /*-----------------------------------------------------------*/
2448 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
2449 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
2450 size_t xTriggerLevelBytes,
2451 BaseType_t xIsMessageBuffer,
2452 uint8_t * const pucStreamBufferStorageArea,
2453 StaticStreamBuffer_t * const pxStaticStreamBuffer,
2454 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2455 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2457 StreamBufferHandle_t xReturn;
2460 * Streambuffer application level callback functionality is disabled for MPU
2463 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2464 ( pxReceiveCompletedCallback == NULL ) );
2466 if( ( pxSendCompletedCallback == NULL ) &&
2467 ( pxReceiveCompletedCallback == NULL ) )
2469 if( portIS_PRIVILEGED() == pdFALSE )
2471 portRAISE_PRIVILEGE();
2472 portMEMORY_BARRIER();
2474 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2477 pucStreamBufferStorageArea,
2478 pxStaticStreamBuffer,
2481 portMEMORY_BARRIER();
2483 portRESET_PRIVILEGE();
2484 portMEMORY_BARRIER();
2488 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2491 pucStreamBufferStorageArea,
2492 pxStaticStreamBuffer,
2499 traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer );
2505 #endif /* configSUPPORT_STATIC_ALLOCATION */
2506 /*-----------------------------------------------------------*/
2509 /* Functions that the application writer wants to execute in privileged mode
2510 * can be defined in application_defined_privileged_functions.h. The functions
2511 * must take the same format as those above whereby the privilege state on exit
2512 * equals the privilege state on entry. For example:
2514 * void MPU_FunctionName( [parameters ] ) FREERTOS_SYSTEM_CALL;
2515 * void MPU_FunctionName( [parameters ] )
2517 * if( portIS_PRIVILEGED() == pdFALSE )
2519 * portRAISE_PRIVILEGE();
2520 * portMEMORY_BARRIER();
2522 * FunctionName( [parameters ] );
2523 * portMEMORY_BARRIER();
2525 * portRESET_PRIVILEGE();
2526 * portMEMORY_BARRIER();
2530 * FunctionName( [parameters ] );
2535 #if configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS == 1
2536 #include "application_defined_privileged_functions.h"
2538 /*-----------------------------------------------------------*/
2540 #endif /* portUSING_MPU_WRAPPERS == 1 */
2541 /*-----------------------------------------------------------*/