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 ) && ( configUSE_MPU_WRAPPERS_V1 == 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 #if ( INCLUDE_xTaskGetHandle == 1 )
481 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) /* FREERTOS_SYSTEM_CALL */
483 TaskHandle_t xReturn;
485 if( portIS_PRIVILEGED() == pdFALSE )
487 portRAISE_PRIVILEGE();
488 portMEMORY_BARRIER();
490 xReturn = xTaskGetHandle( pcNameToQuery );
491 portMEMORY_BARRIER();
493 portRESET_PRIVILEGE();
494 portMEMORY_BARRIER();
498 xReturn = xTaskGetHandle( pcNameToQuery );
503 #endif /* if ( INCLUDE_xTaskGetHandle == 1 ) */
504 /*-----------------------------------------------------------*/
506 #if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
507 void MPU_vTaskList( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
509 if( portIS_PRIVILEGED() == pdFALSE )
511 portRAISE_PRIVILEGE();
512 portMEMORY_BARRIER();
514 vTaskList( pcWriteBuffer );
515 portMEMORY_BARRIER();
517 portRESET_PRIVILEGE();
518 portMEMORY_BARRIER();
522 vTaskList( pcWriteBuffer );
525 #endif /* if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
526 /*-----------------------------------------------------------*/
528 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
529 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
531 if( portIS_PRIVILEGED() == pdFALSE )
533 portRAISE_PRIVILEGE();
534 portMEMORY_BARRIER();
536 vTaskGetRunTimeStats( pcWriteBuffer );
537 portMEMORY_BARRIER();
539 portRESET_PRIVILEGE();
540 portMEMORY_BARRIER();
544 vTaskGetRunTimeStats( pcWriteBuffer );
547 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
548 /*-----------------------------------------------------------*/
550 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
551 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */
553 configRUN_TIME_COUNTER_TYPE xReturn;
555 if( portIS_PRIVILEGED() == pdFALSE )
557 portRAISE_PRIVILEGE();
558 portMEMORY_BARRIER();
560 xReturn = ulTaskGetIdleRunTimePercent();
561 portMEMORY_BARRIER();
563 portRESET_PRIVILEGE();
564 portMEMORY_BARRIER();
568 xReturn = ulTaskGetIdleRunTimePercent();
573 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
574 /*-----------------------------------------------------------*/
576 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
577 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */
579 configRUN_TIME_COUNTER_TYPE xReturn;
581 if( portIS_PRIVILEGED() == pdFALSE )
583 portRAISE_PRIVILEGE();
584 portMEMORY_BARRIER();
586 xReturn = ulTaskGetIdleRunTimeCounter();
587 portMEMORY_BARRIER();
589 portRESET_PRIVILEGE();
590 portMEMORY_BARRIER();
594 xReturn = ulTaskGetIdleRunTimeCounter();
599 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
600 /*-----------------------------------------------------------*/
602 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
603 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
604 TaskHookFunction_t pxTagValue ) /* FREERTOS_SYSTEM_CALL */
606 if( portIS_PRIVILEGED() == pdFALSE )
608 portRAISE_PRIVILEGE();
609 portMEMORY_BARRIER();
611 vTaskSetApplicationTaskTag( xTask, pxTagValue );
612 portMEMORY_BARRIER();
614 portRESET_PRIVILEGE();
615 portMEMORY_BARRIER();
619 vTaskSetApplicationTaskTag( xTask, pxTagValue );
622 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
623 /*-----------------------------------------------------------*/
625 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
626 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
628 TaskHookFunction_t xReturn;
630 if( portIS_PRIVILEGED() == pdFALSE )
632 portRAISE_PRIVILEGE();
633 portMEMORY_BARRIER();
635 xReturn = xTaskGetApplicationTaskTag( xTask );
636 portMEMORY_BARRIER();
638 portRESET_PRIVILEGE();
639 portMEMORY_BARRIER();
643 xReturn = xTaskGetApplicationTaskTag( xTask );
648 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
649 /*-----------------------------------------------------------*/
651 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
652 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
654 void * pvValue ) /* FREERTOS_SYSTEM_CALL */
656 if( portIS_PRIVILEGED() == pdFALSE )
658 portRAISE_PRIVILEGE();
659 portMEMORY_BARRIER();
661 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
662 portMEMORY_BARRIER();
664 portRESET_PRIVILEGE();
665 portMEMORY_BARRIER();
669 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
672 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
673 /*-----------------------------------------------------------*/
675 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
676 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
677 BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */
681 if( portIS_PRIVILEGED() == pdFALSE )
683 portRAISE_PRIVILEGE();
684 portMEMORY_BARRIER();
686 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
687 portMEMORY_BARRIER();
689 portRESET_PRIVILEGE();
690 portMEMORY_BARRIER();
694 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
699 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
700 /*-----------------------------------------------------------*/
702 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
703 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
704 void * pvParameter ) /* FREERTOS_SYSTEM_CALL */
708 if( portIS_PRIVILEGED() == pdFALSE )
710 portRAISE_PRIVILEGE();
711 portMEMORY_BARRIER();
713 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
714 portMEMORY_BARRIER();
716 portRESET_PRIVILEGE();
717 portMEMORY_BARRIER();
721 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
726 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
727 /*-----------------------------------------------------------*/
729 #if ( configUSE_TRACE_FACILITY == 1 )
730 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * pxTaskStatusArray,
731 UBaseType_t uxArraySize,
732 configRUN_TIME_COUNTER_TYPE * pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */
734 UBaseType_t uxReturn;
736 if( portIS_PRIVILEGED() == pdFALSE )
738 portRAISE_PRIVILEGE();
739 portMEMORY_BARRIER();
741 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
742 portMEMORY_BARRIER();
744 portRESET_PRIVILEGE();
745 portMEMORY_BARRIER();
749 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
754 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
755 /*-----------------------------------------------------------*/
757 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) /* FREERTOS_SYSTEM_CALL */
761 if( portIS_PRIVILEGED() == pdFALSE )
763 portRAISE_PRIVILEGE();
764 portMEMORY_BARRIER();
766 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
767 portMEMORY_BARRIER();
769 portRESET_PRIVILEGE();
770 portMEMORY_BARRIER();
774 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
779 /*-----------------------------------------------------------*/
781 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )
782 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
784 UBaseType_t uxReturn;
786 if( portIS_PRIVILEGED() == pdFALSE )
788 portRAISE_PRIVILEGE();
789 portMEMORY_BARRIER();
791 uxReturn = uxTaskGetStackHighWaterMark( xTask );
792 portMEMORY_BARRIER();
794 portRESET_PRIVILEGE();
795 portMEMORY_BARRIER();
799 uxReturn = uxTaskGetStackHighWaterMark( xTask );
804 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */
805 /*-----------------------------------------------------------*/
807 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 )
808 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
810 configSTACK_DEPTH_TYPE uxReturn;
812 if( portIS_PRIVILEGED() == pdFALSE )
814 portRAISE_PRIVILEGE();
815 portMEMORY_BARRIER();
817 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
818 portMEMORY_BARRIER();
820 portRESET_PRIVILEGE();
821 portMEMORY_BARRIER();
825 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
830 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */
831 /*-----------------------------------------------------------*/
833 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) )
834 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
836 TaskHandle_t xReturn;
838 if( portIS_PRIVILEGED() == pdFALSE )
840 portRAISE_PRIVILEGE();
841 portMEMORY_BARRIER();
842 xReturn = xTaskGetCurrentTaskHandle();
843 portMEMORY_BARRIER();
845 portRESET_PRIVILEGE();
846 portMEMORY_BARRIER();
850 xReturn = xTaskGetCurrentTaskHandle();
855 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */
856 /*-----------------------------------------------------------*/
858 #if ( INCLUDE_xTaskGetSchedulerState == 1 )
859 BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */
863 if( portIS_PRIVILEGED() == pdFALSE )
865 portRAISE_PRIVILEGE();
866 portMEMORY_BARRIER();
868 xReturn = xTaskGetSchedulerState();
869 portMEMORY_BARRIER();
871 portRESET_PRIVILEGE();
872 portMEMORY_BARRIER();
876 xReturn = xTaskGetSchedulerState();
881 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */
882 /*-----------------------------------------------------------*/
884 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */
886 if( portIS_PRIVILEGED() == pdFALSE )
888 portRAISE_PRIVILEGE();
889 portMEMORY_BARRIER();
891 vTaskSetTimeOutState( pxTimeOut );
892 portMEMORY_BARRIER();
894 portRESET_PRIVILEGE();
895 portMEMORY_BARRIER();
899 vTaskSetTimeOutState( pxTimeOut );
902 /*-----------------------------------------------------------*/
904 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
905 TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */
909 if( portIS_PRIVILEGED() == pdFALSE )
911 portRAISE_PRIVILEGE();
912 portMEMORY_BARRIER();
914 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
915 portMEMORY_BARRIER();
917 portRESET_PRIVILEGE();
918 portMEMORY_BARRIER();
922 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
927 /*-----------------------------------------------------------*/
929 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
930 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
931 UBaseType_t uxIndexToNotify,
933 eNotifyAction eAction,
934 uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */
938 if( portIS_PRIVILEGED() == pdFALSE )
940 portRAISE_PRIVILEGE();
941 portMEMORY_BARRIER();
943 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
944 portMEMORY_BARRIER();
946 portRESET_PRIVILEGE();
947 portMEMORY_BARRIER();
951 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
956 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
957 /*-----------------------------------------------------------*/
959 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
960 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
961 uint32_t ulBitsToClearOnEntry,
962 uint32_t ulBitsToClearOnExit,
963 uint32_t * pulNotificationValue,
964 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
968 if( portIS_PRIVILEGED() == pdFALSE )
970 portRAISE_PRIVILEGE();
971 portMEMORY_BARRIER();
973 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
974 portMEMORY_BARRIER();
976 portRESET_PRIVILEGE();
977 portMEMORY_BARRIER();
981 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
986 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
987 /*-----------------------------------------------------------*/
989 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
990 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
991 BaseType_t xClearCountOnExit,
992 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
996 if( portIS_PRIVILEGED() == pdFALSE )
998 portRAISE_PRIVILEGE();
999 portMEMORY_BARRIER();
1001 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1002 portMEMORY_BARRIER();
1004 portRESET_PRIVILEGE();
1005 portMEMORY_BARRIER();
1009 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1014 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1015 /*-----------------------------------------------------------*/
1017 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1018 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
1019 UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */
1023 if( portIS_PRIVILEGED() == pdFALSE )
1025 portRAISE_PRIVILEGE();
1026 portMEMORY_BARRIER();
1028 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1029 portMEMORY_BARRIER();
1031 portRESET_PRIVILEGE();
1032 portMEMORY_BARRIER();
1036 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1041 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1042 /*-----------------------------------------------------------*/
1044 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1045 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
1046 UBaseType_t uxIndexToClear,
1047 uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */
1051 if( portIS_PRIVILEGED() == pdFALSE )
1053 portRAISE_PRIVILEGE();
1054 portMEMORY_BARRIER();
1056 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1057 portMEMORY_BARRIER();
1059 portRESET_PRIVILEGE();
1060 portMEMORY_BARRIER();
1064 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1069 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1070 /*-----------------------------------------------------------*/
1072 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1073 QueueHandle_t MPU_xQueueGenericCreate( UBaseType_t uxQueueLength,
1074 UBaseType_t uxItemSize,
1075 uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1077 QueueHandle_t xReturn;
1079 if( portIS_PRIVILEGED() == pdFALSE )
1081 portRAISE_PRIVILEGE();
1082 portMEMORY_BARRIER();
1084 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1085 portMEMORY_BARRIER();
1087 portRESET_PRIVILEGE();
1088 portMEMORY_BARRIER();
1092 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1097 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1098 /*-----------------------------------------------------------*/
1100 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1101 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
1102 const UBaseType_t uxItemSize,
1103 uint8_t * pucQueueStorage,
1104 StaticQueue_t * pxStaticQueue,
1105 const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1107 QueueHandle_t xReturn;
1109 if( portIS_PRIVILEGED() == pdFALSE )
1111 portRAISE_PRIVILEGE();
1112 portMEMORY_BARRIER();
1114 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1115 portMEMORY_BARRIER();
1117 portRESET_PRIVILEGE();
1118 portMEMORY_BARRIER();
1122 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1127 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
1128 /*-----------------------------------------------------------*/
1130 BaseType_t MPU_xQueueGenericReset( QueueHandle_t pxQueue,
1131 BaseType_t xNewQueue ) /* FREERTOS_SYSTEM_CALL */
1135 if( portIS_PRIVILEGED() == pdFALSE )
1137 portRAISE_PRIVILEGE();
1138 portMEMORY_BARRIER();
1140 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1141 portMEMORY_BARRIER();
1143 portRESET_PRIVILEGE();
1144 portMEMORY_BARRIER();
1148 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1153 /*-----------------------------------------------------------*/
1155 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
1156 const void * const pvItemToQueue,
1157 TickType_t xTicksToWait,
1158 BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */
1162 if( portIS_PRIVILEGED() == pdFALSE )
1164 portRAISE_PRIVILEGE();
1165 portMEMORY_BARRIER();
1167 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1168 portMEMORY_BARRIER();
1170 portRESET_PRIVILEGE();
1171 portMEMORY_BARRIER();
1175 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1180 /*-----------------------------------------------------------*/
1182 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t pxQueue ) /* FREERTOS_SYSTEM_CALL */
1184 UBaseType_t uxReturn;
1186 if( portIS_PRIVILEGED() == pdFALSE )
1188 portRAISE_PRIVILEGE();
1189 portMEMORY_BARRIER();
1191 uxReturn = uxQueueMessagesWaiting( pxQueue );
1192 portMEMORY_BARRIER();
1194 portRESET_PRIVILEGE();
1195 portMEMORY_BARRIER();
1199 uxReturn = uxQueueMessagesWaiting( pxQueue );
1204 /*-----------------------------------------------------------*/
1206 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1208 UBaseType_t uxReturn;
1210 if( portIS_PRIVILEGED() == pdFALSE )
1212 portRAISE_PRIVILEGE();
1213 portMEMORY_BARRIER();
1215 uxReturn = uxQueueSpacesAvailable( xQueue );
1216 portMEMORY_BARRIER();
1218 portRESET_PRIVILEGE();
1219 portMEMORY_BARRIER();
1223 uxReturn = uxQueueSpacesAvailable( xQueue );
1228 /*-----------------------------------------------------------*/
1230 BaseType_t MPU_xQueueReceive( QueueHandle_t pxQueue,
1231 void * const pvBuffer,
1232 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1236 if( portIS_PRIVILEGED() == pdFALSE )
1238 portRAISE_PRIVILEGE();
1239 portMEMORY_BARRIER();
1241 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1242 portMEMORY_BARRIER();
1244 portRESET_PRIVILEGE();
1245 portMEMORY_BARRIER();
1249 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1254 /*-----------------------------------------------------------*/
1256 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
1257 void * const pvBuffer,
1258 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1262 if( portIS_PRIVILEGED() == pdFALSE )
1264 portRAISE_PRIVILEGE();
1265 portMEMORY_BARRIER();
1267 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1268 portMEMORY_BARRIER();
1270 portRESET_PRIVILEGE();
1271 portMEMORY_BARRIER();
1275 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1280 /*-----------------------------------------------------------*/
1282 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
1283 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1287 if( portIS_PRIVILEGED() == pdFALSE )
1289 portRAISE_PRIVILEGE();
1290 portMEMORY_BARRIER();
1292 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1293 portMEMORY_BARRIER();
1295 portRESET_PRIVILEGE();
1296 portMEMORY_BARRIER();
1300 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1305 /*-----------------------------------------------------------*/
1307 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
1308 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */
1312 if( portIS_PRIVILEGED() == pdFALSE )
1314 portRAISE_PRIVILEGE();
1315 portMEMORY_BARRIER();
1317 xReturn = xQueueGetMutexHolder( xSemaphore );
1318 portMEMORY_BARRIER();
1320 portRESET_PRIVILEGE();
1321 portMEMORY_BARRIER();
1325 xReturn = xQueueGetMutexHolder( xSemaphore );
1330 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */
1331 /*-----------------------------------------------------------*/
1333 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1334 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1336 QueueHandle_t xReturn;
1338 if( portIS_PRIVILEGED() == pdFALSE )
1340 portRAISE_PRIVILEGE();
1341 portMEMORY_BARRIER();
1343 xReturn = xQueueCreateMutex( ucQueueType );
1344 portMEMORY_BARRIER();
1346 portRESET_PRIVILEGE();
1347 portMEMORY_BARRIER();
1351 xReturn = xQueueCreateMutex( ucQueueType );
1356 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1357 /*-----------------------------------------------------------*/
1359 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1360 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
1361 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1363 QueueHandle_t xReturn;
1365 if( portIS_PRIVILEGED() == pdFALSE )
1367 portRAISE_PRIVILEGE();
1368 portMEMORY_BARRIER();
1370 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1371 portMEMORY_BARRIER();
1373 portRESET_PRIVILEGE();
1374 portMEMORY_BARRIER();
1378 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1383 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1384 /*-----------------------------------------------------------*/
1386 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1387 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue,
1388 UBaseType_t uxInitialCount ) /* FREERTOS_SYSTEM_CALL */
1390 QueueHandle_t xReturn;
1392 if( portIS_PRIVILEGED() == pdFALSE )
1394 portRAISE_PRIVILEGE();
1395 portMEMORY_BARRIER();
1397 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1398 portMEMORY_BARRIER();
1400 portRESET_PRIVILEGE();
1401 portMEMORY_BARRIER();
1405 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1410 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1411 /*-----------------------------------------------------------*/
1413 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1415 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
1416 const UBaseType_t uxInitialCount,
1417 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1419 QueueHandle_t xReturn;
1421 if( portIS_PRIVILEGED() == pdFALSE )
1423 portRAISE_PRIVILEGE();
1424 portMEMORY_BARRIER();
1426 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1427 portMEMORY_BARRIER();
1429 portRESET_PRIVILEGE();
1430 portMEMORY_BARRIER();
1434 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1439 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1440 /*-----------------------------------------------------------*/
1442 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1443 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
1444 TickType_t xBlockTime ) /* FREERTOS_SYSTEM_CALL */
1448 if( portIS_PRIVILEGED() == pdFALSE )
1450 portRAISE_PRIVILEGE();
1451 portMEMORY_BARRIER();
1453 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1454 portMEMORY_BARRIER();
1456 portRESET_PRIVILEGE();
1457 portMEMORY_BARRIER();
1461 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1466 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1467 /*-----------------------------------------------------------*/
1469 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1470 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex ) /* FREERTOS_SYSTEM_CALL */
1474 if( portIS_PRIVILEGED() == pdFALSE )
1476 portRAISE_PRIVILEGE();
1477 portMEMORY_BARRIER();
1479 xReturn = xQueueGiveMutexRecursive( xMutex );
1480 portMEMORY_BARRIER();
1482 portRESET_PRIVILEGE();
1483 portMEMORY_BARRIER();
1487 xReturn = xQueueGiveMutexRecursive( xMutex );
1492 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1493 /*-----------------------------------------------------------*/
1495 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1496 QueueSetHandle_t MPU_xQueueCreateSet( UBaseType_t uxEventQueueLength ) /* FREERTOS_SYSTEM_CALL */
1498 QueueSetHandle_t xReturn;
1500 if( portIS_PRIVILEGED() == pdFALSE )
1502 portRAISE_PRIVILEGE();
1503 portMEMORY_BARRIER();
1505 xReturn = xQueueCreateSet( uxEventQueueLength );
1506 portMEMORY_BARRIER();
1508 portRESET_PRIVILEGE();
1509 portMEMORY_BARRIER();
1513 xReturn = xQueueCreateSet( uxEventQueueLength );
1518 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1519 /*-----------------------------------------------------------*/
1521 #if ( configUSE_QUEUE_SETS == 1 )
1522 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
1523 TickType_t xBlockTimeTicks ) /* FREERTOS_SYSTEM_CALL */
1525 QueueSetMemberHandle_t xReturn;
1527 if( portIS_PRIVILEGED() == pdFALSE )
1529 portRAISE_PRIVILEGE();
1530 portMEMORY_BARRIER();
1532 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1533 portMEMORY_BARRIER();
1535 portRESET_PRIVILEGE();
1536 portMEMORY_BARRIER();
1540 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1545 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1546 /*-----------------------------------------------------------*/
1548 #if ( configUSE_QUEUE_SETS == 1 )
1549 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1550 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1554 if( portIS_PRIVILEGED() == pdFALSE )
1556 portRAISE_PRIVILEGE();
1557 portMEMORY_BARRIER();
1559 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1560 portMEMORY_BARRIER();
1562 portRESET_PRIVILEGE();
1563 portMEMORY_BARRIER();
1567 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1572 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1573 /*-----------------------------------------------------------*/
1575 #if ( configUSE_QUEUE_SETS == 1 )
1576 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1577 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1581 if( portIS_PRIVILEGED() == pdFALSE )
1583 portRAISE_PRIVILEGE();
1584 portMEMORY_BARRIER();
1586 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1587 portMEMORY_BARRIER();
1589 portRESET_PRIVILEGE();
1590 portMEMORY_BARRIER();
1594 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1599 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1600 /*-----------------------------------------------------------*/
1602 #if configQUEUE_REGISTRY_SIZE > 0
1603 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
1604 const char * pcName ) /* FREERTOS_SYSTEM_CALL */
1606 if( portIS_PRIVILEGED() == pdFALSE )
1608 portRAISE_PRIVILEGE();
1609 portMEMORY_BARRIER();
1611 vQueueAddToRegistry( xQueue, pcName );
1612 portMEMORY_BARRIER();
1614 portRESET_PRIVILEGE();
1615 portMEMORY_BARRIER();
1619 vQueueAddToRegistry( xQueue, pcName );
1622 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1623 /*-----------------------------------------------------------*/
1625 #if configQUEUE_REGISTRY_SIZE > 0
1626 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1628 if( portIS_PRIVILEGED() == pdFALSE )
1630 portRAISE_PRIVILEGE();
1631 portMEMORY_BARRIER();
1633 vQueueUnregisterQueue( xQueue );
1634 portMEMORY_BARRIER();
1636 portRESET_PRIVILEGE();
1637 portMEMORY_BARRIER();
1641 vQueueUnregisterQueue( xQueue );
1644 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1645 /*-----------------------------------------------------------*/
1647 #if configQUEUE_REGISTRY_SIZE > 0
1648 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1650 const char * pcReturn;
1652 if( portIS_PRIVILEGED() == pdFALSE )
1654 portRAISE_PRIVILEGE();
1655 portMEMORY_BARRIER();
1657 pcReturn = pcQueueGetName( xQueue );
1658 portMEMORY_BARRIER();
1660 portRESET_PRIVILEGE();
1661 portMEMORY_BARRIER();
1665 pcReturn = pcQueueGetName( xQueue );
1670 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1671 /*-----------------------------------------------------------*/
1673 void MPU_vQueueDelete( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1675 if( portIS_PRIVILEGED() == pdFALSE )
1677 portRAISE_PRIVILEGE();
1678 portMEMORY_BARRIER();
1680 vQueueDelete( xQueue );
1681 portMEMORY_BARRIER();
1683 portRESET_PRIVILEGE();
1684 portMEMORY_BARRIER();
1688 vQueueDelete( xQueue );
1691 /*-----------------------------------------------------------*/
1693 #if ( configUSE_TIMERS == 1 )
1694 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1698 if( portIS_PRIVILEGED() == pdFALSE )
1700 portRAISE_PRIVILEGE();
1701 portMEMORY_BARRIER();
1703 pvReturn = pvTimerGetTimerID( xTimer );
1704 portMEMORY_BARRIER();
1706 portRESET_PRIVILEGE();
1707 portMEMORY_BARRIER();
1711 pvReturn = pvTimerGetTimerID( xTimer );
1716 #endif /* if ( configUSE_TIMERS == 1 ) */
1717 /*-----------------------------------------------------------*/
1719 #if ( configUSE_TIMERS == 1 )
1720 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
1721 void * pvNewID ) /* FREERTOS_SYSTEM_CALL */
1723 if( portIS_PRIVILEGED() == pdFALSE )
1725 portRAISE_PRIVILEGE();
1726 portMEMORY_BARRIER();
1728 vTimerSetTimerID( xTimer, pvNewID );
1729 portMEMORY_BARRIER();
1731 portRESET_PRIVILEGE();
1732 portMEMORY_BARRIER();
1736 vTimerSetTimerID( xTimer, pvNewID );
1739 #endif /* if ( configUSE_TIMERS == 1 ) */
1740 /*-----------------------------------------------------------*/
1742 #if ( configUSE_TIMERS == 1 )
1743 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1747 if( portIS_PRIVILEGED() == pdFALSE )
1749 portRAISE_PRIVILEGE();
1750 portMEMORY_BARRIER();
1752 xReturn = xTimerIsTimerActive( xTimer );
1753 portMEMORY_BARRIER();
1755 portRESET_PRIVILEGE();
1756 portMEMORY_BARRIER();
1760 xReturn = xTimerIsTimerActive( xTimer );
1765 #endif /* if ( configUSE_TIMERS == 1 ) */
1766 /*-----------------------------------------------------------*/
1768 #if ( configUSE_TIMERS == 1 )
1769 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
1771 TaskHandle_t xReturn;
1773 if( portIS_PRIVILEGED() == pdFALSE )
1775 portRAISE_PRIVILEGE();
1776 portMEMORY_BARRIER();
1778 xReturn = xTimerGetTimerDaemonTaskHandle();
1779 portMEMORY_BARRIER();
1781 portRESET_PRIVILEGE();
1782 portMEMORY_BARRIER();
1786 xReturn = xTimerGetTimerDaemonTaskHandle();
1791 #endif /* if ( configUSE_TIMERS == 1 ) */
1792 /*-----------------------------------------------------------*/
1794 #if ( configUSE_TIMERS == 1 )
1795 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
1796 const UBaseType_t uxAutoReload ) /* FREERTOS_SYSTEM_CALL */
1798 if( portIS_PRIVILEGED() == pdFALSE )
1800 portRAISE_PRIVILEGE();
1801 portMEMORY_BARRIER();
1803 vTimerSetReloadMode( xTimer, uxAutoReload );
1804 portMEMORY_BARRIER();
1806 portRESET_PRIVILEGE();
1807 portMEMORY_BARRIER();
1811 vTimerSetReloadMode( xTimer, uxAutoReload );
1814 #endif /* if ( configUSE_TIMERS == 1 ) */
1815 /*-----------------------------------------------------------*/
1817 #if ( configUSE_TIMERS == 1 )
1818 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer )
1820 UBaseType_t uxReturn;
1822 if( portIS_PRIVILEGED() == pdFALSE )
1824 portRAISE_PRIVILEGE();
1825 portMEMORY_BARRIER();
1827 uxReturn = uxTimerGetReloadMode( xTimer );
1828 portMEMORY_BARRIER();
1830 portRESET_PRIVILEGE();
1831 portMEMORY_BARRIER();
1835 uxReturn = uxTimerGetReloadMode( xTimer );
1840 #endif /* if ( configUSE_TIMERS == 1 ) */
1841 /*-----------------------------------------------------------*/
1843 #if ( configUSE_TIMERS == 1 )
1844 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1846 const char * pcReturn;
1848 if( portIS_PRIVILEGED() == pdFALSE )
1850 portRAISE_PRIVILEGE();
1851 portMEMORY_BARRIER();
1853 pcReturn = pcTimerGetName( xTimer );
1854 portMEMORY_BARRIER();
1856 portRESET_PRIVILEGE();
1857 portMEMORY_BARRIER();
1861 pcReturn = pcTimerGetName( xTimer );
1866 #endif /* if ( configUSE_TIMERS == 1 ) */
1867 /*-----------------------------------------------------------*/
1869 #if ( configUSE_TIMERS == 1 )
1870 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1874 if( portIS_PRIVILEGED() == pdFALSE )
1876 portRAISE_PRIVILEGE();
1877 portMEMORY_BARRIER();
1879 xReturn = xTimerGetPeriod( xTimer );
1880 portMEMORY_BARRIER();
1882 portRESET_PRIVILEGE();
1883 portMEMORY_BARRIER();
1887 xReturn = xTimerGetPeriod( xTimer );
1892 #endif /* if ( configUSE_TIMERS == 1 ) */
1893 /*-----------------------------------------------------------*/
1895 #if ( configUSE_TIMERS == 1 )
1896 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1900 if( portIS_PRIVILEGED() == pdFALSE )
1902 portRAISE_PRIVILEGE();
1903 portMEMORY_BARRIER();
1905 xReturn = xTimerGetExpiryTime( xTimer );
1906 portMEMORY_BARRIER();
1908 portRESET_PRIVILEGE();
1909 portMEMORY_BARRIER();
1913 xReturn = xTimerGetExpiryTime( xTimer );
1918 #endif /* if ( configUSE_TIMERS == 1 ) */
1919 /*-----------------------------------------------------------*/
1921 #if ( configUSE_TIMERS == 1 )
1922 BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
1923 const BaseType_t xCommandID,
1924 const TickType_t xOptionalValue,
1925 BaseType_t * const pxHigherPriorityTaskWoken,
1926 const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1930 if( portIS_PRIVILEGED() == pdFALSE )
1932 portRAISE_PRIVILEGE();
1933 portMEMORY_BARRIER();
1935 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1936 portMEMORY_BARRIER();
1938 portRESET_PRIVILEGE();
1939 portMEMORY_BARRIER();
1943 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1948 #endif /* if ( configUSE_TIMERS == 1 ) */
1949 /*-----------------------------------------------------------*/
1951 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1952 EventGroupHandle_t MPU_xEventGroupCreate( void ) /* FREERTOS_SYSTEM_CALL */
1954 EventGroupHandle_t xReturn;
1956 if( portIS_PRIVILEGED() == pdFALSE )
1958 portRAISE_PRIVILEGE();
1959 portMEMORY_BARRIER();
1961 xReturn = xEventGroupCreate();
1962 portMEMORY_BARRIER();
1964 portRESET_PRIVILEGE();
1965 portMEMORY_BARRIER();
1969 xReturn = xEventGroupCreate();
1974 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1975 /*-----------------------------------------------------------*/
1977 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1978 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) /* FREERTOS_SYSTEM_CALL */
1980 EventGroupHandle_t xReturn;
1982 if( portIS_PRIVILEGED() == pdFALSE )
1984 portRAISE_PRIVILEGE();
1985 portMEMORY_BARRIER();
1987 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
1988 portMEMORY_BARRIER();
1990 portRESET_PRIVILEGE();
1991 portMEMORY_BARRIER();
1995 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2000 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
2001 /*-----------------------------------------------------------*/
2003 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
2004 const EventBits_t uxBitsToWaitFor,
2005 const BaseType_t xClearOnExit,
2006 const BaseType_t xWaitForAllBits,
2007 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2009 EventBits_t xReturn;
2011 if( portIS_PRIVILEGED() == pdFALSE )
2013 portRAISE_PRIVILEGE();
2014 portMEMORY_BARRIER();
2016 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2017 portMEMORY_BARRIER();
2019 portRESET_PRIVILEGE();
2020 portMEMORY_BARRIER();
2024 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2029 /*-----------------------------------------------------------*/
2031 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
2032 const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */
2034 EventBits_t xReturn;
2036 if( portIS_PRIVILEGED() == pdFALSE )
2038 portRAISE_PRIVILEGE();
2039 portMEMORY_BARRIER();
2041 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2042 portMEMORY_BARRIER();
2044 portRESET_PRIVILEGE();
2045 portMEMORY_BARRIER();
2049 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2054 /*-----------------------------------------------------------*/
2056 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
2057 const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */
2059 EventBits_t xReturn;
2061 if( portIS_PRIVILEGED() == pdFALSE )
2063 portRAISE_PRIVILEGE();
2064 portMEMORY_BARRIER();
2066 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2067 portMEMORY_BARRIER();
2069 portRESET_PRIVILEGE();
2070 portMEMORY_BARRIER();
2074 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2079 /*-----------------------------------------------------------*/
2081 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
2082 const EventBits_t uxBitsToSet,
2083 const EventBits_t uxBitsToWaitFor,
2084 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2086 EventBits_t xReturn;
2088 if( portIS_PRIVILEGED() == pdFALSE )
2090 portRAISE_PRIVILEGE();
2091 portMEMORY_BARRIER();
2093 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2094 portMEMORY_BARRIER();
2096 portRESET_PRIVILEGE();
2097 portMEMORY_BARRIER();
2101 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2106 /*-----------------------------------------------------------*/
2108 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) /* FREERTOS_SYSTEM_CALL */
2110 if( portIS_PRIVILEGED() == pdFALSE )
2112 portRAISE_PRIVILEGE();
2113 portMEMORY_BARRIER();
2115 vEventGroupDelete( xEventGroup );
2116 portMEMORY_BARRIER();
2118 portRESET_PRIVILEGE();
2119 portMEMORY_BARRIER();
2123 vEventGroupDelete( xEventGroup );
2126 /*-----------------------------------------------------------*/
2128 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
2129 const void * pvTxData,
2130 size_t xDataLengthBytes,
2131 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2135 if( portIS_PRIVILEGED() == pdFALSE )
2137 portRAISE_PRIVILEGE();
2138 portMEMORY_BARRIER();
2140 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2141 portMEMORY_BARRIER();
2143 portRESET_PRIVILEGE();
2144 portMEMORY_BARRIER();
2148 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2153 /*-----------------------------------------------------------*/
2155 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2159 if( portIS_PRIVILEGED() == pdFALSE )
2161 portRAISE_PRIVILEGE();
2162 portMEMORY_BARRIER();
2164 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2165 portMEMORY_BARRIER();
2167 portRESET_PRIVILEGE();
2168 portMEMORY_BARRIER();
2172 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2177 /*-----------------------------------------------------------*/
2179 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
2181 size_t xBufferLengthBytes,
2182 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2186 if( portIS_PRIVILEGED() == pdFALSE )
2188 portRAISE_PRIVILEGE();
2189 portMEMORY_BARRIER();
2191 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2192 portMEMORY_BARRIER();
2194 portRESET_PRIVILEGE();
2195 portMEMORY_BARRIER();
2199 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2204 /*-----------------------------------------------------------*/
2206 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2208 if( portIS_PRIVILEGED() == pdFALSE )
2210 portRAISE_PRIVILEGE();
2211 portMEMORY_BARRIER();
2213 vStreamBufferDelete( xStreamBuffer );
2214 portMEMORY_BARRIER();
2216 portRESET_PRIVILEGE();
2217 portMEMORY_BARRIER();
2221 vStreamBufferDelete( xStreamBuffer );
2224 /*-----------------------------------------------------------*/
2226 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2230 if( portIS_PRIVILEGED() == pdFALSE )
2232 portRAISE_PRIVILEGE();
2233 portMEMORY_BARRIER();
2235 xReturn = xStreamBufferIsFull( xStreamBuffer );
2236 portMEMORY_BARRIER();
2238 portRESET_PRIVILEGE();
2239 portMEMORY_BARRIER();
2243 xReturn = xStreamBufferIsFull( xStreamBuffer );
2248 /*-----------------------------------------------------------*/
2250 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2254 if( portIS_PRIVILEGED() == pdFALSE )
2256 portRAISE_PRIVILEGE();
2257 portMEMORY_BARRIER();
2259 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2260 portMEMORY_BARRIER();
2262 portRESET_PRIVILEGE();
2263 portMEMORY_BARRIER();
2267 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2272 /*-----------------------------------------------------------*/
2274 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2278 if( portIS_PRIVILEGED() == pdFALSE )
2280 portRAISE_PRIVILEGE();
2281 portMEMORY_BARRIER();
2283 xReturn = xStreamBufferReset( xStreamBuffer );
2284 portMEMORY_BARRIER();
2286 portRESET_PRIVILEGE();
2287 portMEMORY_BARRIER();
2291 xReturn = xStreamBufferReset( xStreamBuffer );
2296 /*-----------------------------------------------------------*/
2298 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2302 if( portIS_PRIVILEGED() == pdFALSE )
2304 portRAISE_PRIVILEGE();
2305 portMEMORY_BARRIER();
2306 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2307 portMEMORY_BARRIER();
2309 portRESET_PRIVILEGE();
2310 portMEMORY_BARRIER();
2314 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2319 /*-----------------------------------------------------------*/
2321 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2325 if( portIS_PRIVILEGED() == pdFALSE )
2327 portRAISE_PRIVILEGE();
2328 portMEMORY_BARRIER();
2330 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2331 portMEMORY_BARRIER();
2333 portRESET_PRIVILEGE();
2334 portMEMORY_BARRIER();
2338 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2343 /*-----------------------------------------------------------*/
2345 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
2346 size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */
2350 if( portIS_PRIVILEGED() == pdFALSE )
2352 portRAISE_PRIVILEGE();
2353 portMEMORY_BARRIER();
2355 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2356 portMEMORY_BARRIER();
2358 portRESET_PRIVILEGE();
2359 portMEMORY_BARRIER();
2363 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2368 /*-----------------------------------------------------------*/
2370 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
2371 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
2372 size_t xTriggerLevelBytes,
2373 BaseType_t xIsMessageBuffer,
2374 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2375 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2377 StreamBufferHandle_t xReturn;
2380 * Streambuffer application level callback functionality is disabled for MPU
2383 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2384 ( pxReceiveCompletedCallback == NULL ) );
2386 if( ( pxSendCompletedCallback == NULL ) &&
2387 ( pxReceiveCompletedCallback == NULL ) )
2389 if( portIS_PRIVILEGED() == pdFALSE )
2391 portRAISE_PRIVILEGE();
2392 portMEMORY_BARRIER();
2394 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2399 portMEMORY_BARRIER();
2401 portRESET_PRIVILEGE();
2402 portMEMORY_BARRIER();
2406 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2415 traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer );
2421 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */
2422 /*-----------------------------------------------------------*/
2424 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
2425 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
2426 size_t xTriggerLevelBytes,
2427 BaseType_t xIsMessageBuffer,
2428 uint8_t * const pucStreamBufferStorageArea,
2429 StaticStreamBuffer_t * const pxStaticStreamBuffer,
2430 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2431 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2433 StreamBufferHandle_t xReturn;
2436 * Streambuffer application level callback functionality is disabled for MPU
2439 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2440 ( pxReceiveCompletedCallback == NULL ) );
2442 if( ( pxSendCompletedCallback == NULL ) &&
2443 ( pxReceiveCompletedCallback == NULL ) )
2445 if( portIS_PRIVILEGED() == pdFALSE )
2447 portRAISE_PRIVILEGE();
2448 portMEMORY_BARRIER();
2450 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2453 pucStreamBufferStorageArea,
2454 pxStaticStreamBuffer,
2457 portMEMORY_BARRIER();
2459 portRESET_PRIVILEGE();
2460 portMEMORY_BARRIER();
2464 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2467 pucStreamBufferStorageArea,
2468 pxStaticStreamBuffer,
2475 traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer );
2481 #endif /* configSUPPORT_STATIC_ALLOCATION */
2482 /*-----------------------------------------------------------*/
2485 /* Functions that the application writer wants to execute in privileged mode
2486 * can be defined in application_defined_privileged_functions.h. The functions
2487 * must take the same format as those above whereby the privilege state on exit
2488 * equals the privilege state on entry. For example:
2490 * void MPU_FunctionName( [parameters ] ) FREERTOS_SYSTEM_CALL;
2491 * void MPU_FunctionName( [parameters ] )
2493 * if( portIS_PRIVILEGED() == pdFALSE )
2495 * portRAISE_PRIVILEGE();
2496 * portMEMORY_BARRIER();
2498 * FunctionName( [parameters ] );
2499 * portMEMORY_BARRIER();
2501 * portRESET_PRIVILEGE();
2502 * portMEMORY_BARRIER();
2506 * FunctionName( [parameters ] );
2511 #if configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS == 1
2512 #include "application_defined_privileged_functions.h"
2514 /*-----------------------------------------------------------*/
2516 #endif /* #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) ) */
2517 /*-----------------------------------------------------------*/