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 ( configENABLE_ACCESS_CONTROL_LIST == 1 )
54 #error Access control list is not available with this MPU wrapper. Please set configENABLE_ACCESS_CONTROL_LIST to 0.
57 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
58 BaseType_t MPU_xTaskCreate( TaskFunction_t pvTaskCode,
59 const char * const pcName,
60 uint16_t usStackDepth,
62 UBaseType_t uxPriority,
63 TaskHandle_t * pxCreatedTask ) /* FREERTOS_SYSTEM_CALL */
67 if( portIS_PRIVILEGED() == pdFALSE )
69 portRAISE_PRIVILEGE();
72 uxPriority = uxPriority & ~( portPRIVILEGE_BIT );
75 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask );
78 portRESET_PRIVILEGE();
83 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask );
88 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */
89 /*-----------------------------------------------------------*/
91 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
92 TaskHandle_t MPU_xTaskCreateStatic( TaskFunction_t pxTaskCode,
93 const char * const pcName,
94 const uint32_t ulStackDepth,
95 void * const pvParameters,
96 UBaseType_t uxPriority,
97 StackType_t * const puxStackBuffer,
98 StaticTask_t * const pxTaskBuffer ) /* FREERTOS_SYSTEM_CALL */
100 TaskHandle_t xReturn;
102 if( portIS_PRIVILEGED() == pdFALSE )
104 portRAISE_PRIVILEGE();
105 portMEMORY_BARRIER();
107 uxPriority = uxPriority & ~( portPRIVILEGE_BIT );
108 portMEMORY_BARRIER();
110 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer );
111 portMEMORY_BARRIER();
113 portRESET_PRIVILEGE();
114 portMEMORY_BARRIER();
118 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer );
123 #endif /* configSUPPORT_STATIC_ALLOCATION */
124 /*-----------------------------------------------------------*/
126 #if ( INCLUDE_vTaskDelete == 1 )
127 void MPU_vTaskDelete( TaskHandle_t pxTaskToDelete ) /* FREERTOS_SYSTEM_CALL */
129 if( portIS_PRIVILEGED() == pdFALSE )
131 portRAISE_PRIVILEGE();
132 portMEMORY_BARRIER();
134 vTaskDelete( pxTaskToDelete );
135 portMEMORY_BARRIER();
137 portRESET_PRIVILEGE();
138 portMEMORY_BARRIER();
142 vTaskDelete( pxTaskToDelete );
145 #endif /* if ( INCLUDE_vTaskDelete == 1 ) */
146 /*-----------------------------------------------------------*/
148 #if ( INCLUDE_xTaskDelayUntil == 1 )
149 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime,
150 TickType_t xTimeIncrement ) /* FREERTOS_SYSTEM_CALL */
154 if( portIS_PRIVILEGED() == pdFALSE )
156 portRAISE_PRIVILEGE();
157 portMEMORY_BARRIER();
159 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement );
160 portMEMORY_BARRIER();
162 portRESET_PRIVILEGE();
163 portMEMORY_BARRIER();
167 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement );
172 #endif /* if ( INCLUDE_xTaskDelayUntil == 1 ) */
173 /*-----------------------------------------------------------*/
175 #if ( INCLUDE_xTaskAbortDelay == 1 )
176 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
180 if( portIS_PRIVILEGED() == pdFALSE )
182 portRAISE_PRIVILEGE();
183 portMEMORY_BARRIER();
185 xReturn = xTaskAbortDelay( xTask );
186 portMEMORY_BARRIER();
188 portRESET_PRIVILEGE();
189 portMEMORY_BARRIER();
193 xReturn = xTaskAbortDelay( xTask );
198 #endif /* if ( INCLUDE_xTaskAbortDelay == 1 ) */
199 /*-----------------------------------------------------------*/
201 #if ( INCLUDE_vTaskDelay == 1 )
202 void MPU_vTaskDelay( TickType_t xTicksToDelay ) /* FREERTOS_SYSTEM_CALL */
204 if( portIS_PRIVILEGED() == pdFALSE )
206 portRAISE_PRIVILEGE();
207 portMEMORY_BARRIER();
209 vTaskDelay( xTicksToDelay );
210 portMEMORY_BARRIER();
212 portRESET_PRIVILEGE();
213 portMEMORY_BARRIER();
217 vTaskDelay( xTicksToDelay );
220 #endif /* if ( INCLUDE_vTaskDelay == 1 ) */
221 /*-----------------------------------------------------------*/
223 #if ( INCLUDE_uxTaskPriorityGet == 1 )
224 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */
226 UBaseType_t uxReturn;
228 if( portIS_PRIVILEGED() == pdFALSE )
230 portRAISE_PRIVILEGE();
231 portMEMORY_BARRIER();
233 uxReturn = uxTaskPriorityGet( pxTask );
234 portMEMORY_BARRIER();
236 portRESET_PRIVILEGE();
237 portMEMORY_BARRIER();
241 uxReturn = uxTaskPriorityGet( pxTask );
246 #endif /* if ( INCLUDE_uxTaskPriorityGet == 1 ) */
247 /*-----------------------------------------------------------*/
249 #if ( INCLUDE_vTaskPrioritySet == 1 )
250 void MPU_vTaskPrioritySet( TaskHandle_t pxTask,
251 UBaseType_t uxNewPriority ) /* FREERTOS_SYSTEM_CALL */
253 if( portIS_PRIVILEGED() == pdFALSE )
255 portRAISE_PRIVILEGE();
256 portMEMORY_BARRIER();
258 vTaskPrioritySet( pxTask, uxNewPriority );
259 portMEMORY_BARRIER();
261 portRESET_PRIVILEGE();
262 portMEMORY_BARRIER();
266 vTaskPrioritySet( pxTask, uxNewPriority );
269 #endif /* if ( INCLUDE_vTaskPrioritySet == 1 ) */
270 /*-----------------------------------------------------------*/
272 #if ( INCLUDE_eTaskGetState == 1 )
273 eTaskState MPU_eTaskGetState( TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */
277 if( portIS_PRIVILEGED() == pdFALSE )
279 portRAISE_PRIVILEGE();
280 portMEMORY_BARRIER();
282 eReturn = eTaskGetState( pxTask );
283 portMEMORY_BARRIER();
285 portRESET_PRIVILEGE();
286 portMEMORY_BARRIER();
290 eReturn = eTaskGetState( pxTask );
295 #endif /* if ( INCLUDE_eTaskGetState == 1 ) */
296 /*-----------------------------------------------------------*/
298 #if ( configUSE_TRACE_FACILITY == 1 )
299 void MPU_vTaskGetInfo( TaskHandle_t xTask,
300 TaskStatus_t * pxTaskStatus,
301 BaseType_t xGetFreeStackSpace,
302 eTaskState eState ) /* FREERTOS_SYSTEM_CALL */
304 if( portIS_PRIVILEGED() == pdFALSE )
306 portRAISE_PRIVILEGE();
307 portMEMORY_BARRIER();
309 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState );
310 portMEMORY_BARRIER();
312 portRESET_PRIVILEGE();
313 portMEMORY_BARRIER();
317 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState );
320 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
321 /*-----------------------------------------------------------*/
323 #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 )
324 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
326 TaskHandle_t xReturn;
328 if( portIS_PRIVILEGED() == pdFALSE )
330 portRAISE_PRIVILEGE();
331 portMEMORY_BARRIER();
332 xReturn = xTaskGetIdleTaskHandle();
333 portMEMORY_BARRIER();
335 portRESET_PRIVILEGE();
336 portMEMORY_BARRIER();
340 xReturn = xTaskGetIdleTaskHandle();
345 #endif /* if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) */
346 /*-----------------------------------------------------------*/
348 #if ( INCLUDE_vTaskSuspend == 1 )
349 void MPU_vTaskSuspend( TaskHandle_t pxTaskToSuspend ) /* FREERTOS_SYSTEM_CALL */
351 if( portIS_PRIVILEGED() == pdFALSE )
353 portRAISE_PRIVILEGE();
354 portMEMORY_BARRIER();
356 vTaskSuspend( pxTaskToSuspend );
357 portMEMORY_BARRIER();
359 portRESET_PRIVILEGE();
360 portMEMORY_BARRIER();
364 vTaskSuspend( pxTaskToSuspend );
367 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */
368 /*-----------------------------------------------------------*/
370 #if ( INCLUDE_vTaskSuspend == 1 )
371 void MPU_vTaskResume( TaskHandle_t pxTaskToResume ) /* FREERTOS_SYSTEM_CALL */
373 if( portIS_PRIVILEGED() == pdFALSE )
375 portRAISE_PRIVILEGE();
376 portMEMORY_BARRIER();
378 vTaskResume( pxTaskToResume );
379 portMEMORY_BARRIER();
381 portRESET_PRIVILEGE();
382 portMEMORY_BARRIER();
386 vTaskResume( pxTaskToResume );
389 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */
390 /*-----------------------------------------------------------*/
392 void MPU_vTaskSuspendAll( void ) /* FREERTOS_SYSTEM_CALL */
394 if( portIS_PRIVILEGED() == pdFALSE )
396 portRAISE_PRIVILEGE();
397 portMEMORY_BARRIER();
400 portMEMORY_BARRIER();
402 portRESET_PRIVILEGE();
403 portMEMORY_BARRIER();
410 /*-----------------------------------------------------------*/
412 BaseType_t MPU_xTaskResumeAll( void ) /* FREERTOS_SYSTEM_CALL */
416 if( portIS_PRIVILEGED() == pdFALSE )
418 portRAISE_PRIVILEGE();
419 portMEMORY_BARRIER();
421 xReturn = xTaskResumeAll();
422 portMEMORY_BARRIER();
424 portRESET_PRIVILEGE();
425 portMEMORY_BARRIER();
429 xReturn = xTaskResumeAll();
434 /*-----------------------------------------------------------*/
436 TickType_t MPU_xTaskGetTickCount( void ) /* FREERTOS_SYSTEM_CALL */
440 if( portIS_PRIVILEGED() == pdFALSE )
442 portRAISE_PRIVILEGE();
443 portMEMORY_BARRIER();
445 xReturn = xTaskGetTickCount();
446 portMEMORY_BARRIER();
448 portRESET_PRIVILEGE();
449 portMEMORY_BARRIER();
453 xReturn = xTaskGetTickCount();
458 /*-----------------------------------------------------------*/
460 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) /* FREERTOS_SYSTEM_CALL */
462 UBaseType_t uxReturn;
464 if( portIS_PRIVILEGED() == pdFALSE )
466 portRAISE_PRIVILEGE();
467 portMEMORY_BARRIER();
469 uxReturn = uxTaskGetNumberOfTasks();
470 portMEMORY_BARRIER();
472 portRESET_PRIVILEGE();
473 portMEMORY_BARRIER();
477 uxReturn = uxTaskGetNumberOfTasks();
482 /*-----------------------------------------------------------*/
484 #if ( INCLUDE_xTaskGetHandle == 1 )
485 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) /* FREERTOS_SYSTEM_CALL */
487 TaskHandle_t xReturn;
489 if( portIS_PRIVILEGED() == pdFALSE )
491 portRAISE_PRIVILEGE();
492 portMEMORY_BARRIER();
494 xReturn = xTaskGetHandle( pcNameToQuery );
495 portMEMORY_BARRIER();
497 portRESET_PRIVILEGE();
498 portMEMORY_BARRIER();
502 xReturn = xTaskGetHandle( pcNameToQuery );
507 #endif /* if ( INCLUDE_xTaskGetHandle == 1 ) */
508 /*-----------------------------------------------------------*/
510 #if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
511 void MPU_vTaskList( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
513 if( portIS_PRIVILEGED() == pdFALSE )
515 portRAISE_PRIVILEGE();
516 portMEMORY_BARRIER();
518 vTaskList( pcWriteBuffer );
519 portMEMORY_BARRIER();
521 portRESET_PRIVILEGE();
522 portMEMORY_BARRIER();
526 vTaskList( pcWriteBuffer );
529 #endif /* if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
530 /*-----------------------------------------------------------*/
532 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
533 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */
535 if( portIS_PRIVILEGED() == pdFALSE )
537 portRAISE_PRIVILEGE();
538 portMEMORY_BARRIER();
540 vTaskGetRunTimeStats( pcWriteBuffer );
541 portMEMORY_BARRIER();
543 portRESET_PRIVILEGE();
544 portMEMORY_BARRIER();
548 vTaskGetRunTimeStats( pcWriteBuffer );
551 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
552 /*-----------------------------------------------------------*/
554 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
555 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */
557 configRUN_TIME_COUNTER_TYPE xReturn;
559 if( portIS_PRIVILEGED() == pdFALSE )
561 portRAISE_PRIVILEGE();
562 portMEMORY_BARRIER();
564 xReturn = ulTaskGetIdleRunTimePercent();
565 portMEMORY_BARRIER();
567 portRESET_PRIVILEGE();
568 portMEMORY_BARRIER();
572 xReturn = ulTaskGetIdleRunTimePercent();
577 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
578 /*-----------------------------------------------------------*/
580 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
581 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */
583 configRUN_TIME_COUNTER_TYPE xReturn;
585 if( portIS_PRIVILEGED() == pdFALSE )
587 portRAISE_PRIVILEGE();
588 portMEMORY_BARRIER();
590 xReturn = ulTaskGetIdleRunTimeCounter();
591 portMEMORY_BARRIER();
593 portRESET_PRIVILEGE();
594 portMEMORY_BARRIER();
598 xReturn = ulTaskGetIdleRunTimeCounter();
603 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
604 /*-----------------------------------------------------------*/
606 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
607 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
608 TaskHookFunction_t pxTagValue ) /* FREERTOS_SYSTEM_CALL */
610 if( portIS_PRIVILEGED() == pdFALSE )
612 portRAISE_PRIVILEGE();
613 portMEMORY_BARRIER();
615 vTaskSetApplicationTaskTag( xTask, pxTagValue );
616 portMEMORY_BARRIER();
618 portRESET_PRIVILEGE();
619 portMEMORY_BARRIER();
623 vTaskSetApplicationTaskTag( xTask, pxTagValue );
626 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
627 /*-----------------------------------------------------------*/
629 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
630 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
632 TaskHookFunction_t xReturn;
634 if( portIS_PRIVILEGED() == pdFALSE )
636 portRAISE_PRIVILEGE();
637 portMEMORY_BARRIER();
639 xReturn = xTaskGetApplicationTaskTag( xTask );
640 portMEMORY_BARRIER();
642 portRESET_PRIVILEGE();
643 portMEMORY_BARRIER();
647 xReturn = xTaskGetApplicationTaskTag( xTask );
652 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
653 /*-----------------------------------------------------------*/
655 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
656 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
658 void * pvValue ) /* FREERTOS_SYSTEM_CALL */
660 if( portIS_PRIVILEGED() == pdFALSE )
662 portRAISE_PRIVILEGE();
663 portMEMORY_BARRIER();
665 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
666 portMEMORY_BARRIER();
668 portRESET_PRIVILEGE();
669 portMEMORY_BARRIER();
673 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
676 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
677 /*-----------------------------------------------------------*/
679 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
680 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
681 BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */
685 if( portIS_PRIVILEGED() == pdFALSE )
687 portRAISE_PRIVILEGE();
688 portMEMORY_BARRIER();
690 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
691 portMEMORY_BARRIER();
693 portRESET_PRIVILEGE();
694 portMEMORY_BARRIER();
698 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
703 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
704 /*-----------------------------------------------------------*/
706 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
707 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
708 void * pvParameter ) /* FREERTOS_SYSTEM_CALL */
712 if( portIS_PRIVILEGED() == pdFALSE )
714 portRAISE_PRIVILEGE();
715 portMEMORY_BARRIER();
717 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
718 portMEMORY_BARRIER();
720 portRESET_PRIVILEGE();
721 portMEMORY_BARRIER();
725 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
730 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
731 /*-----------------------------------------------------------*/
733 #if ( configUSE_TRACE_FACILITY == 1 )
734 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * pxTaskStatusArray,
735 UBaseType_t uxArraySize,
736 configRUN_TIME_COUNTER_TYPE * pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */
738 UBaseType_t uxReturn;
740 if( portIS_PRIVILEGED() == pdFALSE )
742 portRAISE_PRIVILEGE();
743 portMEMORY_BARRIER();
745 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
746 portMEMORY_BARRIER();
748 portRESET_PRIVILEGE();
749 portMEMORY_BARRIER();
753 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
758 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
759 /*-----------------------------------------------------------*/
761 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) /* FREERTOS_SYSTEM_CALL */
765 if( portIS_PRIVILEGED() == pdFALSE )
767 portRAISE_PRIVILEGE();
768 portMEMORY_BARRIER();
770 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
771 portMEMORY_BARRIER();
773 portRESET_PRIVILEGE();
774 portMEMORY_BARRIER();
778 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
783 /*-----------------------------------------------------------*/
785 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )
786 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
788 UBaseType_t uxReturn;
790 if( portIS_PRIVILEGED() == pdFALSE )
792 portRAISE_PRIVILEGE();
793 portMEMORY_BARRIER();
795 uxReturn = uxTaskGetStackHighWaterMark( xTask );
796 portMEMORY_BARRIER();
798 portRESET_PRIVILEGE();
799 portMEMORY_BARRIER();
803 uxReturn = uxTaskGetStackHighWaterMark( xTask );
808 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */
809 /*-----------------------------------------------------------*/
811 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 )
812 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
814 configSTACK_DEPTH_TYPE uxReturn;
816 if( portIS_PRIVILEGED() == pdFALSE )
818 portRAISE_PRIVILEGE();
819 portMEMORY_BARRIER();
821 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
822 portMEMORY_BARRIER();
824 portRESET_PRIVILEGE();
825 portMEMORY_BARRIER();
829 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
834 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */
835 /*-----------------------------------------------------------*/
837 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) )
838 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
840 TaskHandle_t xReturn;
842 if( portIS_PRIVILEGED() == pdFALSE )
844 portRAISE_PRIVILEGE();
845 portMEMORY_BARRIER();
846 xReturn = xTaskGetCurrentTaskHandle();
847 portMEMORY_BARRIER();
849 portRESET_PRIVILEGE();
850 portMEMORY_BARRIER();
854 xReturn = xTaskGetCurrentTaskHandle();
859 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */
860 /*-----------------------------------------------------------*/
862 #if ( INCLUDE_xTaskGetSchedulerState == 1 )
863 BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */
867 if( portIS_PRIVILEGED() == pdFALSE )
869 portRAISE_PRIVILEGE();
870 portMEMORY_BARRIER();
872 xReturn = xTaskGetSchedulerState();
873 portMEMORY_BARRIER();
875 portRESET_PRIVILEGE();
876 portMEMORY_BARRIER();
880 xReturn = xTaskGetSchedulerState();
885 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */
886 /*-----------------------------------------------------------*/
888 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */
890 if( portIS_PRIVILEGED() == pdFALSE )
892 portRAISE_PRIVILEGE();
893 portMEMORY_BARRIER();
895 vTaskSetTimeOutState( pxTimeOut );
896 portMEMORY_BARRIER();
898 portRESET_PRIVILEGE();
899 portMEMORY_BARRIER();
903 vTaskSetTimeOutState( pxTimeOut );
906 /*-----------------------------------------------------------*/
908 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
909 TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */
913 if( portIS_PRIVILEGED() == pdFALSE )
915 portRAISE_PRIVILEGE();
916 portMEMORY_BARRIER();
918 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
919 portMEMORY_BARRIER();
921 portRESET_PRIVILEGE();
922 portMEMORY_BARRIER();
926 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
931 /*-----------------------------------------------------------*/
933 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
934 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
935 UBaseType_t uxIndexToNotify,
937 eNotifyAction eAction,
938 uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */
942 if( portIS_PRIVILEGED() == pdFALSE )
944 portRAISE_PRIVILEGE();
945 portMEMORY_BARRIER();
947 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
948 portMEMORY_BARRIER();
950 portRESET_PRIVILEGE();
951 portMEMORY_BARRIER();
955 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
960 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
961 /*-----------------------------------------------------------*/
963 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
964 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
965 uint32_t ulBitsToClearOnEntry,
966 uint32_t ulBitsToClearOnExit,
967 uint32_t * pulNotificationValue,
968 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
972 if( portIS_PRIVILEGED() == pdFALSE )
974 portRAISE_PRIVILEGE();
975 portMEMORY_BARRIER();
977 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
978 portMEMORY_BARRIER();
980 portRESET_PRIVILEGE();
981 portMEMORY_BARRIER();
985 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
990 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
991 /*-----------------------------------------------------------*/
993 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
994 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
995 BaseType_t xClearCountOnExit,
996 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1000 if( portIS_PRIVILEGED() == pdFALSE )
1002 portRAISE_PRIVILEGE();
1003 portMEMORY_BARRIER();
1005 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1006 portMEMORY_BARRIER();
1008 portRESET_PRIVILEGE();
1009 portMEMORY_BARRIER();
1013 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1018 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1019 /*-----------------------------------------------------------*/
1021 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1022 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
1023 UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */
1027 if( portIS_PRIVILEGED() == pdFALSE )
1029 portRAISE_PRIVILEGE();
1030 portMEMORY_BARRIER();
1032 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1033 portMEMORY_BARRIER();
1035 portRESET_PRIVILEGE();
1036 portMEMORY_BARRIER();
1040 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1045 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1046 /*-----------------------------------------------------------*/
1048 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1049 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
1050 UBaseType_t uxIndexToClear,
1051 uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */
1055 if( portIS_PRIVILEGED() == pdFALSE )
1057 portRAISE_PRIVILEGE();
1058 portMEMORY_BARRIER();
1060 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1061 portMEMORY_BARRIER();
1063 portRESET_PRIVILEGE();
1064 portMEMORY_BARRIER();
1068 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1073 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1074 /*-----------------------------------------------------------*/
1076 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1077 QueueHandle_t MPU_xQueueGenericCreate( UBaseType_t uxQueueLength,
1078 UBaseType_t uxItemSize,
1079 uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1081 QueueHandle_t xReturn;
1083 if( portIS_PRIVILEGED() == pdFALSE )
1085 portRAISE_PRIVILEGE();
1086 portMEMORY_BARRIER();
1088 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1089 portMEMORY_BARRIER();
1091 portRESET_PRIVILEGE();
1092 portMEMORY_BARRIER();
1096 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1101 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1102 /*-----------------------------------------------------------*/
1104 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1105 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
1106 const UBaseType_t uxItemSize,
1107 uint8_t * pucQueueStorage,
1108 StaticQueue_t * pxStaticQueue,
1109 const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1111 QueueHandle_t xReturn;
1113 if( portIS_PRIVILEGED() == pdFALSE )
1115 portRAISE_PRIVILEGE();
1116 portMEMORY_BARRIER();
1118 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1119 portMEMORY_BARRIER();
1121 portRESET_PRIVILEGE();
1122 portMEMORY_BARRIER();
1126 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1131 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
1132 /*-----------------------------------------------------------*/
1134 BaseType_t MPU_xQueueGenericReset( QueueHandle_t pxQueue,
1135 BaseType_t xNewQueue ) /* FREERTOS_SYSTEM_CALL */
1139 if( portIS_PRIVILEGED() == pdFALSE )
1141 portRAISE_PRIVILEGE();
1142 portMEMORY_BARRIER();
1144 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1145 portMEMORY_BARRIER();
1147 portRESET_PRIVILEGE();
1148 portMEMORY_BARRIER();
1152 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1157 /*-----------------------------------------------------------*/
1159 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
1160 const void * const pvItemToQueue,
1161 TickType_t xTicksToWait,
1162 BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */
1166 if( portIS_PRIVILEGED() == pdFALSE )
1168 portRAISE_PRIVILEGE();
1169 portMEMORY_BARRIER();
1171 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1172 portMEMORY_BARRIER();
1174 portRESET_PRIVILEGE();
1175 portMEMORY_BARRIER();
1179 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1184 /*-----------------------------------------------------------*/
1186 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t pxQueue ) /* FREERTOS_SYSTEM_CALL */
1188 UBaseType_t uxReturn;
1190 if( portIS_PRIVILEGED() == pdFALSE )
1192 portRAISE_PRIVILEGE();
1193 portMEMORY_BARRIER();
1195 uxReturn = uxQueueMessagesWaiting( pxQueue );
1196 portMEMORY_BARRIER();
1198 portRESET_PRIVILEGE();
1199 portMEMORY_BARRIER();
1203 uxReturn = uxQueueMessagesWaiting( pxQueue );
1208 /*-----------------------------------------------------------*/
1210 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1212 UBaseType_t uxReturn;
1214 if( portIS_PRIVILEGED() == pdFALSE )
1216 portRAISE_PRIVILEGE();
1217 portMEMORY_BARRIER();
1219 uxReturn = uxQueueSpacesAvailable( xQueue );
1220 portMEMORY_BARRIER();
1222 portRESET_PRIVILEGE();
1223 portMEMORY_BARRIER();
1227 uxReturn = uxQueueSpacesAvailable( xQueue );
1232 /*-----------------------------------------------------------*/
1234 BaseType_t MPU_xQueueReceive( QueueHandle_t pxQueue,
1235 void * const pvBuffer,
1236 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1240 if( portIS_PRIVILEGED() == pdFALSE )
1242 portRAISE_PRIVILEGE();
1243 portMEMORY_BARRIER();
1245 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1246 portMEMORY_BARRIER();
1248 portRESET_PRIVILEGE();
1249 portMEMORY_BARRIER();
1253 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1258 /*-----------------------------------------------------------*/
1260 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
1261 void * const pvBuffer,
1262 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1266 if( portIS_PRIVILEGED() == pdFALSE )
1268 portRAISE_PRIVILEGE();
1269 portMEMORY_BARRIER();
1271 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1272 portMEMORY_BARRIER();
1274 portRESET_PRIVILEGE();
1275 portMEMORY_BARRIER();
1279 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1284 /*-----------------------------------------------------------*/
1286 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
1287 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1291 if( portIS_PRIVILEGED() == pdFALSE )
1293 portRAISE_PRIVILEGE();
1294 portMEMORY_BARRIER();
1296 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1297 portMEMORY_BARRIER();
1299 portRESET_PRIVILEGE();
1300 portMEMORY_BARRIER();
1304 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1309 /*-----------------------------------------------------------*/
1311 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
1312 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */
1316 if( portIS_PRIVILEGED() == pdFALSE )
1318 portRAISE_PRIVILEGE();
1319 portMEMORY_BARRIER();
1321 xReturn = xQueueGetMutexHolder( xSemaphore );
1322 portMEMORY_BARRIER();
1324 portRESET_PRIVILEGE();
1325 portMEMORY_BARRIER();
1329 xReturn = xQueueGetMutexHolder( xSemaphore );
1334 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */
1335 /*-----------------------------------------------------------*/
1337 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1338 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1340 QueueHandle_t xReturn;
1342 if( portIS_PRIVILEGED() == pdFALSE )
1344 portRAISE_PRIVILEGE();
1345 portMEMORY_BARRIER();
1347 xReturn = xQueueCreateMutex( ucQueueType );
1348 portMEMORY_BARRIER();
1350 portRESET_PRIVILEGE();
1351 portMEMORY_BARRIER();
1355 xReturn = xQueueCreateMutex( ucQueueType );
1360 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1361 /*-----------------------------------------------------------*/
1363 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1364 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
1365 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1367 QueueHandle_t xReturn;
1369 if( portIS_PRIVILEGED() == pdFALSE )
1371 portRAISE_PRIVILEGE();
1372 portMEMORY_BARRIER();
1374 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1375 portMEMORY_BARRIER();
1377 portRESET_PRIVILEGE();
1378 portMEMORY_BARRIER();
1382 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1387 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1388 /*-----------------------------------------------------------*/
1390 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1391 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue,
1392 UBaseType_t uxInitialCount ) /* FREERTOS_SYSTEM_CALL */
1394 QueueHandle_t xReturn;
1396 if( portIS_PRIVILEGED() == pdFALSE )
1398 portRAISE_PRIVILEGE();
1399 portMEMORY_BARRIER();
1401 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1402 portMEMORY_BARRIER();
1404 portRESET_PRIVILEGE();
1405 portMEMORY_BARRIER();
1409 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1414 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1415 /*-----------------------------------------------------------*/
1417 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1419 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
1420 const UBaseType_t uxInitialCount,
1421 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1423 QueueHandle_t xReturn;
1425 if( portIS_PRIVILEGED() == pdFALSE )
1427 portRAISE_PRIVILEGE();
1428 portMEMORY_BARRIER();
1430 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1431 portMEMORY_BARRIER();
1433 portRESET_PRIVILEGE();
1434 portMEMORY_BARRIER();
1438 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1443 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1444 /*-----------------------------------------------------------*/
1446 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1447 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
1448 TickType_t xBlockTime ) /* FREERTOS_SYSTEM_CALL */
1452 if( portIS_PRIVILEGED() == pdFALSE )
1454 portRAISE_PRIVILEGE();
1455 portMEMORY_BARRIER();
1457 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1458 portMEMORY_BARRIER();
1460 portRESET_PRIVILEGE();
1461 portMEMORY_BARRIER();
1465 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1470 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1471 /*-----------------------------------------------------------*/
1473 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1474 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex ) /* FREERTOS_SYSTEM_CALL */
1478 if( portIS_PRIVILEGED() == pdFALSE )
1480 portRAISE_PRIVILEGE();
1481 portMEMORY_BARRIER();
1483 xReturn = xQueueGiveMutexRecursive( xMutex );
1484 portMEMORY_BARRIER();
1486 portRESET_PRIVILEGE();
1487 portMEMORY_BARRIER();
1491 xReturn = xQueueGiveMutexRecursive( xMutex );
1496 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1497 /*-----------------------------------------------------------*/
1499 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1500 QueueSetHandle_t MPU_xQueueCreateSet( UBaseType_t uxEventQueueLength ) /* FREERTOS_SYSTEM_CALL */
1502 QueueSetHandle_t xReturn;
1504 if( portIS_PRIVILEGED() == pdFALSE )
1506 portRAISE_PRIVILEGE();
1507 portMEMORY_BARRIER();
1509 xReturn = xQueueCreateSet( uxEventQueueLength );
1510 portMEMORY_BARRIER();
1512 portRESET_PRIVILEGE();
1513 portMEMORY_BARRIER();
1517 xReturn = xQueueCreateSet( uxEventQueueLength );
1522 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1523 /*-----------------------------------------------------------*/
1525 #if ( configUSE_QUEUE_SETS == 1 )
1526 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
1527 TickType_t xBlockTimeTicks ) /* FREERTOS_SYSTEM_CALL */
1529 QueueSetMemberHandle_t xReturn;
1531 if( portIS_PRIVILEGED() == pdFALSE )
1533 portRAISE_PRIVILEGE();
1534 portMEMORY_BARRIER();
1536 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1537 portMEMORY_BARRIER();
1539 portRESET_PRIVILEGE();
1540 portMEMORY_BARRIER();
1544 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1549 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1550 /*-----------------------------------------------------------*/
1552 #if ( configUSE_QUEUE_SETS == 1 )
1553 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1554 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1558 if( portIS_PRIVILEGED() == pdFALSE )
1560 portRAISE_PRIVILEGE();
1561 portMEMORY_BARRIER();
1563 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1564 portMEMORY_BARRIER();
1566 portRESET_PRIVILEGE();
1567 portMEMORY_BARRIER();
1571 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1576 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1577 /*-----------------------------------------------------------*/
1579 #if ( configUSE_QUEUE_SETS == 1 )
1580 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1581 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1585 if( portIS_PRIVILEGED() == pdFALSE )
1587 portRAISE_PRIVILEGE();
1588 portMEMORY_BARRIER();
1590 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1591 portMEMORY_BARRIER();
1593 portRESET_PRIVILEGE();
1594 portMEMORY_BARRIER();
1598 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1603 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1604 /*-----------------------------------------------------------*/
1606 #if configQUEUE_REGISTRY_SIZE > 0
1607 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
1608 const char * pcName ) /* FREERTOS_SYSTEM_CALL */
1610 if( portIS_PRIVILEGED() == pdFALSE )
1612 portRAISE_PRIVILEGE();
1613 portMEMORY_BARRIER();
1615 vQueueAddToRegistry( xQueue, pcName );
1616 portMEMORY_BARRIER();
1618 portRESET_PRIVILEGE();
1619 portMEMORY_BARRIER();
1623 vQueueAddToRegistry( xQueue, pcName );
1626 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1627 /*-----------------------------------------------------------*/
1629 #if configQUEUE_REGISTRY_SIZE > 0
1630 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1632 if( portIS_PRIVILEGED() == pdFALSE )
1634 portRAISE_PRIVILEGE();
1635 portMEMORY_BARRIER();
1637 vQueueUnregisterQueue( xQueue );
1638 portMEMORY_BARRIER();
1640 portRESET_PRIVILEGE();
1641 portMEMORY_BARRIER();
1645 vQueueUnregisterQueue( xQueue );
1648 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1649 /*-----------------------------------------------------------*/
1651 #if configQUEUE_REGISTRY_SIZE > 0
1652 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1654 const char * pcReturn;
1656 if( portIS_PRIVILEGED() == pdFALSE )
1658 portRAISE_PRIVILEGE();
1659 portMEMORY_BARRIER();
1661 pcReturn = pcQueueGetName( xQueue );
1662 portMEMORY_BARRIER();
1664 portRESET_PRIVILEGE();
1665 portMEMORY_BARRIER();
1669 pcReturn = pcQueueGetName( xQueue );
1674 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1675 /*-----------------------------------------------------------*/
1677 void MPU_vQueueDelete( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1679 if( portIS_PRIVILEGED() == pdFALSE )
1681 portRAISE_PRIVILEGE();
1682 portMEMORY_BARRIER();
1684 vQueueDelete( xQueue );
1685 portMEMORY_BARRIER();
1687 portRESET_PRIVILEGE();
1688 portMEMORY_BARRIER();
1692 vQueueDelete( xQueue );
1695 /*-----------------------------------------------------------*/
1697 #if ( configUSE_TIMERS == 1 )
1698 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1702 if( portIS_PRIVILEGED() == pdFALSE )
1704 portRAISE_PRIVILEGE();
1705 portMEMORY_BARRIER();
1707 pvReturn = pvTimerGetTimerID( xTimer );
1708 portMEMORY_BARRIER();
1710 portRESET_PRIVILEGE();
1711 portMEMORY_BARRIER();
1715 pvReturn = pvTimerGetTimerID( xTimer );
1720 #endif /* if ( configUSE_TIMERS == 1 ) */
1721 /*-----------------------------------------------------------*/
1723 #if ( configUSE_TIMERS == 1 )
1724 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
1725 void * pvNewID ) /* FREERTOS_SYSTEM_CALL */
1727 if( portIS_PRIVILEGED() == pdFALSE )
1729 portRAISE_PRIVILEGE();
1730 portMEMORY_BARRIER();
1732 vTimerSetTimerID( xTimer, pvNewID );
1733 portMEMORY_BARRIER();
1735 portRESET_PRIVILEGE();
1736 portMEMORY_BARRIER();
1740 vTimerSetTimerID( xTimer, pvNewID );
1743 #endif /* if ( configUSE_TIMERS == 1 ) */
1744 /*-----------------------------------------------------------*/
1746 #if ( configUSE_TIMERS == 1 )
1747 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1751 if( portIS_PRIVILEGED() == pdFALSE )
1753 portRAISE_PRIVILEGE();
1754 portMEMORY_BARRIER();
1756 xReturn = xTimerIsTimerActive( xTimer );
1757 portMEMORY_BARRIER();
1759 portRESET_PRIVILEGE();
1760 portMEMORY_BARRIER();
1764 xReturn = xTimerIsTimerActive( xTimer );
1769 #endif /* if ( configUSE_TIMERS == 1 ) */
1770 /*-----------------------------------------------------------*/
1772 #if ( configUSE_TIMERS == 1 )
1773 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
1775 TaskHandle_t xReturn;
1777 if( portIS_PRIVILEGED() == pdFALSE )
1779 portRAISE_PRIVILEGE();
1780 portMEMORY_BARRIER();
1782 xReturn = xTimerGetTimerDaemonTaskHandle();
1783 portMEMORY_BARRIER();
1785 portRESET_PRIVILEGE();
1786 portMEMORY_BARRIER();
1790 xReturn = xTimerGetTimerDaemonTaskHandle();
1795 #endif /* if ( configUSE_TIMERS == 1 ) */
1796 /*-----------------------------------------------------------*/
1798 #if ( configUSE_TIMERS == 1 )
1799 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
1800 const UBaseType_t uxAutoReload ) /* FREERTOS_SYSTEM_CALL */
1802 if( portIS_PRIVILEGED() == pdFALSE )
1804 portRAISE_PRIVILEGE();
1805 portMEMORY_BARRIER();
1807 vTimerSetReloadMode( xTimer, uxAutoReload );
1808 portMEMORY_BARRIER();
1810 portRESET_PRIVILEGE();
1811 portMEMORY_BARRIER();
1815 vTimerSetReloadMode( xTimer, uxAutoReload );
1818 #endif /* if ( configUSE_TIMERS == 1 ) */
1819 /*-----------------------------------------------------------*/
1821 #if ( configUSE_TIMERS == 1 )
1822 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer )
1824 UBaseType_t uxReturn;
1826 if( portIS_PRIVILEGED() == pdFALSE )
1828 portRAISE_PRIVILEGE();
1829 portMEMORY_BARRIER();
1831 uxReturn = uxTimerGetReloadMode( xTimer );
1832 portMEMORY_BARRIER();
1834 portRESET_PRIVILEGE();
1835 portMEMORY_BARRIER();
1839 uxReturn = uxTimerGetReloadMode( xTimer );
1844 #endif /* if ( configUSE_TIMERS == 1 ) */
1845 /*-----------------------------------------------------------*/
1847 #if ( configUSE_TIMERS == 1 )
1848 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1850 const char * pcReturn;
1852 if( portIS_PRIVILEGED() == pdFALSE )
1854 portRAISE_PRIVILEGE();
1855 portMEMORY_BARRIER();
1857 pcReturn = pcTimerGetName( xTimer );
1858 portMEMORY_BARRIER();
1860 portRESET_PRIVILEGE();
1861 portMEMORY_BARRIER();
1865 pcReturn = pcTimerGetName( xTimer );
1870 #endif /* if ( configUSE_TIMERS == 1 ) */
1871 /*-----------------------------------------------------------*/
1873 #if ( configUSE_TIMERS == 1 )
1874 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1878 if( portIS_PRIVILEGED() == pdFALSE )
1880 portRAISE_PRIVILEGE();
1881 portMEMORY_BARRIER();
1883 xReturn = xTimerGetPeriod( xTimer );
1884 portMEMORY_BARRIER();
1886 portRESET_PRIVILEGE();
1887 portMEMORY_BARRIER();
1891 xReturn = xTimerGetPeriod( xTimer );
1896 #endif /* if ( configUSE_TIMERS == 1 ) */
1897 /*-----------------------------------------------------------*/
1899 #if ( configUSE_TIMERS == 1 )
1900 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1904 if( portIS_PRIVILEGED() == pdFALSE )
1906 portRAISE_PRIVILEGE();
1907 portMEMORY_BARRIER();
1909 xReturn = xTimerGetExpiryTime( xTimer );
1910 portMEMORY_BARRIER();
1912 portRESET_PRIVILEGE();
1913 portMEMORY_BARRIER();
1917 xReturn = xTimerGetExpiryTime( xTimer );
1922 #endif /* if ( configUSE_TIMERS == 1 ) */
1923 /*-----------------------------------------------------------*/
1925 #if ( configUSE_TIMERS == 1 )
1926 BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
1927 const BaseType_t xCommandID,
1928 const TickType_t xOptionalValue,
1929 BaseType_t * const pxHigherPriorityTaskWoken,
1930 const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1934 if( portIS_PRIVILEGED() == pdFALSE )
1936 portRAISE_PRIVILEGE();
1937 portMEMORY_BARRIER();
1939 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1940 portMEMORY_BARRIER();
1942 portRESET_PRIVILEGE();
1943 portMEMORY_BARRIER();
1947 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1952 #endif /* if ( configUSE_TIMERS == 1 ) */
1953 /*-----------------------------------------------------------*/
1955 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1956 EventGroupHandle_t MPU_xEventGroupCreate( void ) /* FREERTOS_SYSTEM_CALL */
1958 EventGroupHandle_t xReturn;
1960 if( portIS_PRIVILEGED() == pdFALSE )
1962 portRAISE_PRIVILEGE();
1963 portMEMORY_BARRIER();
1965 xReturn = xEventGroupCreate();
1966 portMEMORY_BARRIER();
1968 portRESET_PRIVILEGE();
1969 portMEMORY_BARRIER();
1973 xReturn = xEventGroupCreate();
1978 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1979 /*-----------------------------------------------------------*/
1981 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1982 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) /* FREERTOS_SYSTEM_CALL */
1984 EventGroupHandle_t xReturn;
1986 if( portIS_PRIVILEGED() == pdFALSE )
1988 portRAISE_PRIVILEGE();
1989 portMEMORY_BARRIER();
1991 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
1992 portMEMORY_BARRIER();
1994 portRESET_PRIVILEGE();
1995 portMEMORY_BARRIER();
1999 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2004 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
2005 /*-----------------------------------------------------------*/
2007 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
2008 const EventBits_t uxBitsToWaitFor,
2009 const BaseType_t xClearOnExit,
2010 const BaseType_t xWaitForAllBits,
2011 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2013 EventBits_t xReturn;
2015 if( portIS_PRIVILEGED() == pdFALSE )
2017 portRAISE_PRIVILEGE();
2018 portMEMORY_BARRIER();
2020 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2021 portMEMORY_BARRIER();
2023 portRESET_PRIVILEGE();
2024 portMEMORY_BARRIER();
2028 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2033 /*-----------------------------------------------------------*/
2035 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
2036 const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */
2038 EventBits_t xReturn;
2040 if( portIS_PRIVILEGED() == pdFALSE )
2042 portRAISE_PRIVILEGE();
2043 portMEMORY_BARRIER();
2045 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2046 portMEMORY_BARRIER();
2048 portRESET_PRIVILEGE();
2049 portMEMORY_BARRIER();
2053 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2058 /*-----------------------------------------------------------*/
2060 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
2061 const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */
2063 EventBits_t xReturn;
2065 if( portIS_PRIVILEGED() == pdFALSE )
2067 portRAISE_PRIVILEGE();
2068 portMEMORY_BARRIER();
2070 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2071 portMEMORY_BARRIER();
2073 portRESET_PRIVILEGE();
2074 portMEMORY_BARRIER();
2078 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2083 /*-----------------------------------------------------------*/
2085 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
2086 const EventBits_t uxBitsToSet,
2087 const EventBits_t uxBitsToWaitFor,
2088 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2090 EventBits_t xReturn;
2092 if( portIS_PRIVILEGED() == pdFALSE )
2094 portRAISE_PRIVILEGE();
2095 portMEMORY_BARRIER();
2097 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2098 portMEMORY_BARRIER();
2100 portRESET_PRIVILEGE();
2101 portMEMORY_BARRIER();
2105 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2110 /*-----------------------------------------------------------*/
2112 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) /* FREERTOS_SYSTEM_CALL */
2114 if( portIS_PRIVILEGED() == pdFALSE )
2116 portRAISE_PRIVILEGE();
2117 portMEMORY_BARRIER();
2119 vEventGroupDelete( xEventGroup );
2120 portMEMORY_BARRIER();
2122 portRESET_PRIVILEGE();
2123 portMEMORY_BARRIER();
2127 vEventGroupDelete( xEventGroup );
2130 /*-----------------------------------------------------------*/
2132 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
2133 const void * pvTxData,
2134 size_t xDataLengthBytes,
2135 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2139 if( portIS_PRIVILEGED() == pdFALSE )
2141 portRAISE_PRIVILEGE();
2142 portMEMORY_BARRIER();
2144 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2145 portMEMORY_BARRIER();
2147 portRESET_PRIVILEGE();
2148 portMEMORY_BARRIER();
2152 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2157 /*-----------------------------------------------------------*/
2159 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2163 if( portIS_PRIVILEGED() == pdFALSE )
2165 portRAISE_PRIVILEGE();
2166 portMEMORY_BARRIER();
2168 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2169 portMEMORY_BARRIER();
2171 portRESET_PRIVILEGE();
2172 portMEMORY_BARRIER();
2176 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2181 /*-----------------------------------------------------------*/
2183 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
2185 size_t xBufferLengthBytes,
2186 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2190 if( portIS_PRIVILEGED() == pdFALSE )
2192 portRAISE_PRIVILEGE();
2193 portMEMORY_BARRIER();
2195 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2196 portMEMORY_BARRIER();
2198 portRESET_PRIVILEGE();
2199 portMEMORY_BARRIER();
2203 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2208 /*-----------------------------------------------------------*/
2210 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2212 if( portIS_PRIVILEGED() == pdFALSE )
2214 portRAISE_PRIVILEGE();
2215 portMEMORY_BARRIER();
2217 vStreamBufferDelete( xStreamBuffer );
2218 portMEMORY_BARRIER();
2220 portRESET_PRIVILEGE();
2221 portMEMORY_BARRIER();
2225 vStreamBufferDelete( xStreamBuffer );
2228 /*-----------------------------------------------------------*/
2230 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2234 if( portIS_PRIVILEGED() == pdFALSE )
2236 portRAISE_PRIVILEGE();
2237 portMEMORY_BARRIER();
2239 xReturn = xStreamBufferIsFull( xStreamBuffer );
2240 portMEMORY_BARRIER();
2242 portRESET_PRIVILEGE();
2243 portMEMORY_BARRIER();
2247 xReturn = xStreamBufferIsFull( xStreamBuffer );
2252 /*-----------------------------------------------------------*/
2254 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2258 if( portIS_PRIVILEGED() == pdFALSE )
2260 portRAISE_PRIVILEGE();
2261 portMEMORY_BARRIER();
2263 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2264 portMEMORY_BARRIER();
2266 portRESET_PRIVILEGE();
2267 portMEMORY_BARRIER();
2271 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2276 /*-----------------------------------------------------------*/
2278 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2282 if( portIS_PRIVILEGED() == pdFALSE )
2284 portRAISE_PRIVILEGE();
2285 portMEMORY_BARRIER();
2287 xReturn = xStreamBufferReset( xStreamBuffer );
2288 portMEMORY_BARRIER();
2290 portRESET_PRIVILEGE();
2291 portMEMORY_BARRIER();
2295 xReturn = xStreamBufferReset( xStreamBuffer );
2300 /*-----------------------------------------------------------*/
2302 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2306 if( portIS_PRIVILEGED() == pdFALSE )
2308 portRAISE_PRIVILEGE();
2309 portMEMORY_BARRIER();
2310 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2311 portMEMORY_BARRIER();
2313 portRESET_PRIVILEGE();
2314 portMEMORY_BARRIER();
2318 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2323 /*-----------------------------------------------------------*/
2325 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2329 if( portIS_PRIVILEGED() == pdFALSE )
2331 portRAISE_PRIVILEGE();
2332 portMEMORY_BARRIER();
2334 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2335 portMEMORY_BARRIER();
2337 portRESET_PRIVILEGE();
2338 portMEMORY_BARRIER();
2342 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2347 /*-----------------------------------------------------------*/
2349 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
2350 size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */
2354 if( portIS_PRIVILEGED() == pdFALSE )
2356 portRAISE_PRIVILEGE();
2357 portMEMORY_BARRIER();
2359 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2360 portMEMORY_BARRIER();
2362 portRESET_PRIVILEGE();
2363 portMEMORY_BARRIER();
2367 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2372 /*-----------------------------------------------------------*/
2374 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
2375 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
2376 size_t xTriggerLevelBytes,
2377 BaseType_t xIsMessageBuffer,
2378 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2379 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2381 StreamBufferHandle_t xReturn;
2384 * Streambuffer application level callback functionality is disabled for MPU
2387 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2388 ( pxReceiveCompletedCallback == NULL ) );
2390 if( ( pxSendCompletedCallback == NULL ) &&
2391 ( pxReceiveCompletedCallback == NULL ) )
2393 if( portIS_PRIVILEGED() == pdFALSE )
2395 portRAISE_PRIVILEGE();
2396 portMEMORY_BARRIER();
2398 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2403 portMEMORY_BARRIER();
2405 portRESET_PRIVILEGE();
2406 portMEMORY_BARRIER();
2410 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2419 traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer );
2425 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */
2426 /*-----------------------------------------------------------*/
2428 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
2429 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
2430 size_t xTriggerLevelBytes,
2431 BaseType_t xIsMessageBuffer,
2432 uint8_t * const pucStreamBufferStorageArea,
2433 StaticStreamBuffer_t * const pxStaticStreamBuffer,
2434 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2435 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2437 StreamBufferHandle_t xReturn;
2440 * Streambuffer application level callback functionality is disabled for MPU
2443 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2444 ( pxReceiveCompletedCallback == NULL ) );
2446 if( ( pxSendCompletedCallback == NULL ) &&
2447 ( pxReceiveCompletedCallback == NULL ) )
2449 if( portIS_PRIVILEGED() == pdFALSE )
2451 portRAISE_PRIVILEGE();
2452 portMEMORY_BARRIER();
2454 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2457 pucStreamBufferStorageArea,
2458 pxStaticStreamBuffer,
2461 portMEMORY_BARRIER();
2463 portRESET_PRIVILEGE();
2464 portMEMORY_BARRIER();
2468 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2471 pucStreamBufferStorageArea,
2472 pxStaticStreamBuffer,
2479 traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer );
2485 #endif /* configSUPPORT_STATIC_ALLOCATION */
2486 /*-----------------------------------------------------------*/
2489 /* Functions that the application writer wants to execute in privileged mode
2490 * can be defined in application_defined_privileged_functions.h. The functions
2491 * must take the same format as those above whereby the privilege state on exit
2492 * equals the privilege state on entry. For example:
2494 * void MPU_FunctionName( [parameters ] ) FREERTOS_SYSTEM_CALL;
2495 * void MPU_FunctionName( [parameters ] )
2497 * if( portIS_PRIVILEGED() == pdFALSE )
2499 * portRAISE_PRIVILEGE();
2500 * portMEMORY_BARRIER();
2502 * FunctionName( [parameters ] );
2503 * portMEMORY_BARRIER();
2505 * portRESET_PRIVILEGE();
2506 * portMEMORY_BARRIER();
2510 * FunctionName( [parameters ] );
2515 #if configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS == 1
2516 #include "application_defined_privileged_functions.h"
2518 /*-----------------------------------------------------------*/
2520 #endif /* #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) ) */
2521 /*-----------------------------------------------------------*/