2 * FreeRTOS Kernel V11.2.0
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 const configSTACK_DEPTH_TYPE uxStackDepth,
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, uxStackDepth, pvParameters, uxPriority, pxCreatedTask );
78 portRESET_PRIVILEGE();
83 xReturn = xTaskCreate( pvTaskCode, pcName, uxStackDepth, 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 configSTACK_DEPTH_TYPE uxStackDepth,
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, uxStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer );
111 portMEMORY_BARRIER();
113 portRESET_PRIVILEGE();
114 portMEMORY_BARRIER();
118 xReturn = xTaskCreateStatic( pxTaskCode, pcName, uxStackDepth, 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_vTaskListTasks( char * pcWriteBuffer,
512 size_t uxBufferLength ) /* FREERTOS_SYSTEM_CALL */
514 if( portIS_PRIVILEGED() == pdFALSE )
516 portRAISE_PRIVILEGE();
517 portMEMORY_BARRIER();
519 vTaskListTasks( pcWriteBuffer, uxBufferLength );
520 portMEMORY_BARRIER();
522 portRESET_PRIVILEGE();
523 portMEMORY_BARRIER();
527 vTaskListTasks( pcWriteBuffer, uxBufferLength );
530 #endif /* if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
531 /*-----------------------------------------------------------*/
533 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
534 void MPU_vTaskGetRunTimeStatistics( char * pcWriteBuffer,
535 size_t uxBufferLength ) /* FREERTOS_SYSTEM_CALL */
537 if( portIS_PRIVILEGED() == pdFALSE )
539 portRAISE_PRIVILEGE();
540 portMEMORY_BARRIER();
542 vTaskGetRunTimeStatistics( pcWriteBuffer, uxBufferLength );
543 portMEMORY_BARRIER();
545 portRESET_PRIVILEGE();
546 portMEMORY_BARRIER();
550 vTaskGetRunTimeStatistics( pcWriteBuffer, uxBufferLength );
553 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
554 /*-----------------------------------------------------------*/
556 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
557 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */
559 configRUN_TIME_COUNTER_TYPE xReturn;
561 if( portIS_PRIVILEGED() == pdFALSE )
563 portRAISE_PRIVILEGE();
564 portMEMORY_BARRIER();
566 xReturn = ulTaskGetIdleRunTimePercent();
567 portMEMORY_BARRIER();
569 portRESET_PRIVILEGE();
570 portMEMORY_BARRIER();
574 xReturn = ulTaskGetIdleRunTimePercent();
579 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
580 /*-----------------------------------------------------------*/
582 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) )
583 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */
585 configRUN_TIME_COUNTER_TYPE xReturn;
587 if( portIS_PRIVILEGED() == pdFALSE )
589 portRAISE_PRIVILEGE();
590 portMEMORY_BARRIER();
592 xReturn = ulTaskGetIdleRunTimeCounter();
593 portMEMORY_BARRIER();
595 portRESET_PRIVILEGE();
596 portMEMORY_BARRIER();
600 xReturn = ulTaskGetIdleRunTimeCounter();
605 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */
606 /*-----------------------------------------------------------*/
608 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
609 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask,
610 TaskHookFunction_t pxTagValue ) /* FREERTOS_SYSTEM_CALL */
612 if( portIS_PRIVILEGED() == pdFALSE )
614 portRAISE_PRIVILEGE();
615 portMEMORY_BARRIER();
617 vTaskSetApplicationTaskTag( xTask, pxTagValue );
618 portMEMORY_BARRIER();
620 portRESET_PRIVILEGE();
621 portMEMORY_BARRIER();
625 vTaskSetApplicationTaskTag( xTask, pxTagValue );
628 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
629 /*-----------------------------------------------------------*/
631 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
632 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
634 TaskHookFunction_t xReturn;
636 if( portIS_PRIVILEGED() == pdFALSE )
638 portRAISE_PRIVILEGE();
639 portMEMORY_BARRIER();
641 xReturn = xTaskGetApplicationTaskTag( xTask );
642 portMEMORY_BARRIER();
644 portRESET_PRIVILEGE();
645 portMEMORY_BARRIER();
649 xReturn = xTaskGetApplicationTaskTag( xTask );
654 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
655 /*-----------------------------------------------------------*/
657 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
658 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet,
660 void * pvValue ) /* FREERTOS_SYSTEM_CALL */
662 if( portIS_PRIVILEGED() == pdFALSE )
664 portRAISE_PRIVILEGE();
665 portMEMORY_BARRIER();
667 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
668 portMEMORY_BARRIER();
670 portRESET_PRIVILEGE();
671 portMEMORY_BARRIER();
675 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue );
678 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
679 /*-----------------------------------------------------------*/
681 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 )
682 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery,
683 BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */
687 if( portIS_PRIVILEGED() == pdFALSE )
689 portRAISE_PRIVILEGE();
690 portMEMORY_BARRIER();
692 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
693 portMEMORY_BARRIER();
695 portRESET_PRIVILEGE();
696 portMEMORY_BARRIER();
700 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex );
705 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */
706 /*-----------------------------------------------------------*/
708 #if ( configUSE_APPLICATION_TASK_TAG == 1 )
709 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask,
710 void * pvParameter ) /* FREERTOS_SYSTEM_CALL */
714 if( portIS_PRIVILEGED() == pdFALSE )
716 portRAISE_PRIVILEGE();
717 portMEMORY_BARRIER();
719 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
720 portMEMORY_BARRIER();
722 portRESET_PRIVILEGE();
723 portMEMORY_BARRIER();
727 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter );
732 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */
733 /*-----------------------------------------------------------*/
735 #if ( configUSE_TRACE_FACILITY == 1 )
736 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * pxTaskStatusArray,
737 UBaseType_t uxArraySize,
738 configRUN_TIME_COUNTER_TYPE * pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */
740 UBaseType_t uxReturn;
742 if( portIS_PRIVILEGED() == pdFALSE )
744 portRAISE_PRIVILEGE();
745 portMEMORY_BARRIER();
747 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
748 portMEMORY_BARRIER();
750 portRESET_PRIVILEGE();
751 portMEMORY_BARRIER();
755 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime );
760 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */
761 /*-----------------------------------------------------------*/
763 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) /* FREERTOS_SYSTEM_CALL */
767 if( portIS_PRIVILEGED() == pdFALSE )
769 portRAISE_PRIVILEGE();
770 portMEMORY_BARRIER();
772 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
773 portMEMORY_BARRIER();
775 portRESET_PRIVILEGE();
776 portMEMORY_BARRIER();
780 xReturn = xTaskCatchUpTicks( xTicksToCatchUp );
785 /*-----------------------------------------------------------*/
787 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 )
788 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
790 UBaseType_t uxReturn;
792 if( portIS_PRIVILEGED() == pdFALSE )
794 portRAISE_PRIVILEGE();
795 portMEMORY_BARRIER();
797 uxReturn = uxTaskGetStackHighWaterMark( xTask );
798 portMEMORY_BARRIER();
800 portRESET_PRIVILEGE();
801 portMEMORY_BARRIER();
805 uxReturn = uxTaskGetStackHighWaterMark( xTask );
810 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */
811 /*-----------------------------------------------------------*/
813 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 )
814 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */
816 configSTACK_DEPTH_TYPE uxReturn;
818 if( portIS_PRIVILEGED() == pdFALSE )
820 portRAISE_PRIVILEGE();
821 portMEMORY_BARRIER();
823 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
824 portMEMORY_BARRIER();
826 portRESET_PRIVILEGE();
827 portMEMORY_BARRIER();
831 uxReturn = uxTaskGetStackHighWaterMark2( xTask );
836 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */
837 /*-----------------------------------------------------------*/
839 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_RECURSIVE_MUTEXES == 1 ) )
840 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
842 TaskHandle_t xReturn;
844 if( portIS_PRIVILEGED() == pdFALSE )
846 portRAISE_PRIVILEGE();
847 portMEMORY_BARRIER();
848 xReturn = xTaskGetCurrentTaskHandle();
849 portMEMORY_BARRIER();
851 portRESET_PRIVILEGE();
852 portMEMORY_BARRIER();
856 xReturn = xTaskGetCurrentTaskHandle();
861 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_RECURSIVE_MUTEXES == 1 ) ) */
862 /*-----------------------------------------------------------*/
864 #if ( INCLUDE_xTaskGetSchedulerState == 1 )
865 BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */
869 if( portIS_PRIVILEGED() == pdFALSE )
871 portRAISE_PRIVILEGE();
872 portMEMORY_BARRIER();
874 xReturn = xTaskGetSchedulerState();
875 portMEMORY_BARRIER();
877 portRESET_PRIVILEGE();
878 portMEMORY_BARRIER();
882 xReturn = xTaskGetSchedulerState();
887 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */
888 /*-----------------------------------------------------------*/
890 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */
892 if( portIS_PRIVILEGED() == pdFALSE )
894 portRAISE_PRIVILEGE();
895 portMEMORY_BARRIER();
897 vTaskSetTimeOutState( pxTimeOut );
898 portMEMORY_BARRIER();
900 portRESET_PRIVILEGE();
901 portMEMORY_BARRIER();
905 vTaskSetTimeOutState( pxTimeOut );
908 /*-----------------------------------------------------------*/
910 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut,
911 TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */
915 if( portIS_PRIVILEGED() == pdFALSE )
917 portRAISE_PRIVILEGE();
918 portMEMORY_BARRIER();
920 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
921 portMEMORY_BARRIER();
923 portRESET_PRIVILEGE();
924 portMEMORY_BARRIER();
928 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait );
933 /*-----------------------------------------------------------*/
935 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
936 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify,
937 UBaseType_t uxIndexToNotify,
939 eNotifyAction eAction,
940 uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */
944 if( portIS_PRIVILEGED() == pdFALSE )
946 portRAISE_PRIVILEGE();
947 portMEMORY_BARRIER();
949 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
950 portMEMORY_BARRIER();
952 portRESET_PRIVILEGE();
953 portMEMORY_BARRIER();
957 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue );
962 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
963 /*-----------------------------------------------------------*/
965 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
966 BaseType_t MPU_xTaskGenericNotifyWait( UBaseType_t uxIndexToWaitOn,
967 uint32_t ulBitsToClearOnEntry,
968 uint32_t ulBitsToClearOnExit,
969 uint32_t * pulNotificationValue,
970 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
974 if( portIS_PRIVILEGED() == pdFALSE )
976 portRAISE_PRIVILEGE();
977 portMEMORY_BARRIER();
979 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
980 portMEMORY_BARRIER();
982 portRESET_PRIVILEGE();
983 portMEMORY_BARRIER();
987 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait );
992 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
993 /*-----------------------------------------------------------*/
995 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
996 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn,
997 BaseType_t xClearCountOnExit,
998 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1002 if( portIS_PRIVILEGED() == pdFALSE )
1004 portRAISE_PRIVILEGE();
1005 portMEMORY_BARRIER();
1007 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1008 portMEMORY_BARRIER();
1010 portRESET_PRIVILEGE();
1011 portMEMORY_BARRIER();
1015 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait );
1020 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1021 /*-----------------------------------------------------------*/
1023 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1024 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask,
1025 UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */
1029 if( portIS_PRIVILEGED() == pdFALSE )
1031 portRAISE_PRIVILEGE();
1032 portMEMORY_BARRIER();
1034 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1035 portMEMORY_BARRIER();
1037 portRESET_PRIVILEGE();
1038 portMEMORY_BARRIER();
1042 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear );
1047 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1048 /*-----------------------------------------------------------*/
1050 #if ( configUSE_TASK_NOTIFICATIONS == 1 )
1051 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask,
1052 UBaseType_t uxIndexToClear,
1053 uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */
1057 if( portIS_PRIVILEGED() == pdFALSE )
1059 portRAISE_PRIVILEGE();
1060 portMEMORY_BARRIER();
1062 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1063 portMEMORY_BARRIER();
1065 portRESET_PRIVILEGE();
1066 portMEMORY_BARRIER();
1070 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear );
1075 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */
1076 /*-----------------------------------------------------------*/
1078 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 )
1079 QueueHandle_t MPU_xQueueGenericCreate( UBaseType_t uxQueueLength,
1080 UBaseType_t uxItemSize,
1081 uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1083 QueueHandle_t xReturn;
1085 if( portIS_PRIVILEGED() == pdFALSE )
1087 portRAISE_PRIVILEGE();
1088 portMEMORY_BARRIER();
1090 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1091 portMEMORY_BARRIER();
1093 portRESET_PRIVILEGE();
1094 portMEMORY_BARRIER();
1098 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType );
1103 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */
1104 /*-----------------------------------------------------------*/
1106 #if ( configSUPPORT_STATIC_ALLOCATION == 1 )
1107 QueueHandle_t MPU_xQueueGenericCreateStatic( const UBaseType_t uxQueueLength,
1108 const UBaseType_t uxItemSize,
1109 uint8_t * pucQueueStorage,
1110 StaticQueue_t * pxStaticQueue,
1111 const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1113 QueueHandle_t xReturn;
1115 if( portIS_PRIVILEGED() == pdFALSE )
1117 portRAISE_PRIVILEGE();
1118 portMEMORY_BARRIER();
1120 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1121 portMEMORY_BARRIER();
1123 portRESET_PRIVILEGE();
1124 portMEMORY_BARRIER();
1128 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType );
1133 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */
1134 /*-----------------------------------------------------------*/
1136 BaseType_t MPU_xQueueGenericReset( QueueHandle_t pxQueue,
1137 BaseType_t xNewQueue ) /* FREERTOS_SYSTEM_CALL */
1141 if( portIS_PRIVILEGED() == pdFALSE )
1143 portRAISE_PRIVILEGE();
1144 portMEMORY_BARRIER();
1146 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1147 portMEMORY_BARRIER();
1149 portRESET_PRIVILEGE();
1150 portMEMORY_BARRIER();
1154 xReturn = xQueueGenericReset( pxQueue, xNewQueue );
1159 /*-----------------------------------------------------------*/
1161 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue,
1162 const void * const pvItemToQueue,
1163 TickType_t xTicksToWait,
1164 BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */
1168 if( portIS_PRIVILEGED() == pdFALSE )
1170 portRAISE_PRIVILEGE();
1171 portMEMORY_BARRIER();
1173 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1174 portMEMORY_BARRIER();
1176 portRESET_PRIVILEGE();
1177 portMEMORY_BARRIER();
1181 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition );
1186 /*-----------------------------------------------------------*/
1188 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t pxQueue ) /* FREERTOS_SYSTEM_CALL */
1190 UBaseType_t uxReturn;
1192 if( portIS_PRIVILEGED() == pdFALSE )
1194 portRAISE_PRIVILEGE();
1195 portMEMORY_BARRIER();
1197 uxReturn = uxQueueMessagesWaiting( pxQueue );
1198 portMEMORY_BARRIER();
1200 portRESET_PRIVILEGE();
1201 portMEMORY_BARRIER();
1205 uxReturn = uxQueueMessagesWaiting( pxQueue );
1210 /*-----------------------------------------------------------*/
1212 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1214 UBaseType_t uxReturn;
1216 if( portIS_PRIVILEGED() == pdFALSE )
1218 portRAISE_PRIVILEGE();
1219 portMEMORY_BARRIER();
1221 uxReturn = uxQueueSpacesAvailable( xQueue );
1222 portMEMORY_BARRIER();
1224 portRESET_PRIVILEGE();
1225 portMEMORY_BARRIER();
1229 uxReturn = uxQueueSpacesAvailable( xQueue );
1234 /*-----------------------------------------------------------*/
1236 BaseType_t MPU_xQueueReceive( QueueHandle_t pxQueue,
1237 void * const pvBuffer,
1238 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1242 if( portIS_PRIVILEGED() == pdFALSE )
1244 portRAISE_PRIVILEGE();
1245 portMEMORY_BARRIER();
1247 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1248 portMEMORY_BARRIER();
1250 portRESET_PRIVILEGE();
1251 portMEMORY_BARRIER();
1255 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait );
1260 /*-----------------------------------------------------------*/
1262 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue,
1263 void * const pvBuffer,
1264 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1268 if( portIS_PRIVILEGED() == pdFALSE )
1270 portRAISE_PRIVILEGE();
1271 portMEMORY_BARRIER();
1273 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1274 portMEMORY_BARRIER();
1276 portRESET_PRIVILEGE();
1277 portMEMORY_BARRIER();
1281 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait );
1286 /*-----------------------------------------------------------*/
1288 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue,
1289 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1293 if( portIS_PRIVILEGED() == pdFALSE )
1295 portRAISE_PRIVILEGE();
1296 portMEMORY_BARRIER();
1298 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1299 portMEMORY_BARRIER();
1301 portRESET_PRIVILEGE();
1302 portMEMORY_BARRIER();
1306 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait );
1311 /*-----------------------------------------------------------*/
1313 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) )
1314 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */
1318 if( portIS_PRIVILEGED() == pdFALSE )
1320 portRAISE_PRIVILEGE();
1321 portMEMORY_BARRIER();
1323 xReturn = xQueueGetMutexHolder( xSemaphore );
1324 portMEMORY_BARRIER();
1326 portRESET_PRIVILEGE();
1327 portMEMORY_BARRIER();
1331 xReturn = xQueueGetMutexHolder( xSemaphore );
1336 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */
1337 /*-----------------------------------------------------------*/
1339 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1340 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */
1342 QueueHandle_t xReturn;
1344 if( portIS_PRIVILEGED() == pdFALSE )
1346 portRAISE_PRIVILEGE();
1347 portMEMORY_BARRIER();
1349 xReturn = xQueueCreateMutex( ucQueueType );
1350 portMEMORY_BARRIER();
1352 portRESET_PRIVILEGE();
1353 portMEMORY_BARRIER();
1357 xReturn = xQueueCreateMutex( ucQueueType );
1362 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1363 /*-----------------------------------------------------------*/
1365 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1366 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType,
1367 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1369 QueueHandle_t xReturn;
1371 if( portIS_PRIVILEGED() == pdFALSE )
1373 portRAISE_PRIVILEGE();
1374 portMEMORY_BARRIER();
1376 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1377 portMEMORY_BARRIER();
1379 portRESET_PRIVILEGE();
1380 portMEMORY_BARRIER();
1384 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue );
1389 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1390 /*-----------------------------------------------------------*/
1392 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1393 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue,
1394 UBaseType_t uxInitialCount ) /* FREERTOS_SYSTEM_CALL */
1396 QueueHandle_t xReturn;
1398 if( portIS_PRIVILEGED() == pdFALSE )
1400 portRAISE_PRIVILEGE();
1401 portMEMORY_BARRIER();
1403 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1404 portMEMORY_BARRIER();
1406 portRESET_PRIVILEGE();
1407 portMEMORY_BARRIER();
1411 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount );
1416 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1417 /*-----------------------------------------------------------*/
1419 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1421 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount,
1422 const UBaseType_t uxInitialCount,
1423 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1425 QueueHandle_t xReturn;
1427 if( portIS_PRIVILEGED() == pdFALSE )
1429 portRAISE_PRIVILEGE();
1430 portMEMORY_BARRIER();
1432 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1433 portMEMORY_BARRIER();
1435 portRESET_PRIVILEGE();
1436 portMEMORY_BARRIER();
1440 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue );
1445 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1446 /*-----------------------------------------------------------*/
1448 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1449 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex,
1450 TickType_t xBlockTime ) /* FREERTOS_SYSTEM_CALL */
1454 if( portIS_PRIVILEGED() == pdFALSE )
1456 portRAISE_PRIVILEGE();
1457 portMEMORY_BARRIER();
1459 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1460 portMEMORY_BARRIER();
1462 portRESET_PRIVILEGE();
1463 portMEMORY_BARRIER();
1467 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime );
1472 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1473 /*-----------------------------------------------------------*/
1475 #if ( configUSE_RECURSIVE_MUTEXES == 1 )
1476 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex ) /* FREERTOS_SYSTEM_CALL */
1480 if( portIS_PRIVILEGED() == pdFALSE )
1482 portRAISE_PRIVILEGE();
1483 portMEMORY_BARRIER();
1485 xReturn = xQueueGiveMutexRecursive( xMutex );
1486 portMEMORY_BARRIER();
1488 portRESET_PRIVILEGE();
1489 portMEMORY_BARRIER();
1493 xReturn = xQueueGiveMutexRecursive( xMutex );
1498 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */
1499 /*-----------------------------------------------------------*/
1501 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) )
1502 QueueSetHandle_t MPU_xQueueCreateSet( UBaseType_t uxEventQueueLength ) /* FREERTOS_SYSTEM_CALL */
1504 QueueSetHandle_t xReturn;
1506 if( portIS_PRIVILEGED() == pdFALSE )
1508 portRAISE_PRIVILEGE();
1509 portMEMORY_BARRIER();
1511 xReturn = xQueueCreateSet( uxEventQueueLength );
1512 portMEMORY_BARRIER();
1514 portRESET_PRIVILEGE();
1515 portMEMORY_BARRIER();
1519 xReturn = xQueueCreateSet( uxEventQueueLength );
1524 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */
1525 /*-----------------------------------------------------------*/
1527 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) )
1528 QueueSetHandle_t MPU_xQueueCreateSetStatic( const UBaseType_t uxEventQueueLength,
1529 uint8_t * pucQueueStorage,
1530 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */
1532 QueueSetHandle_t xReturn;
1534 if( portIS_PRIVILEGED() == pdFALSE )
1536 portRAISE_PRIVILEGE();
1537 portMEMORY_BARRIER();
1539 xReturn = xQueueCreateSetStatic( uxEventQueueLength, pucQueueStorage, pxStaticQueue );
1540 portMEMORY_BARRIER();
1542 portRESET_PRIVILEGE();
1543 portMEMORY_BARRIER();
1547 xReturn = xQueueCreateSetStatic( uxEventQueueLength, pucQueueStorage, pxStaticQueue );
1552 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */
1553 /*-----------------------------------------------------------*/
1555 #if ( configUSE_QUEUE_SETS == 1 )
1556 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet,
1557 TickType_t xBlockTimeTicks ) /* FREERTOS_SYSTEM_CALL */
1559 QueueSetMemberHandle_t xReturn;
1561 if( portIS_PRIVILEGED() == pdFALSE )
1563 portRAISE_PRIVILEGE();
1564 portMEMORY_BARRIER();
1566 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1567 portMEMORY_BARRIER();
1569 portRESET_PRIVILEGE();
1570 portMEMORY_BARRIER();
1574 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks );
1579 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1580 /*-----------------------------------------------------------*/
1582 #if ( configUSE_QUEUE_SETS == 1 )
1583 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1584 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1588 if( portIS_PRIVILEGED() == pdFALSE )
1590 portRAISE_PRIVILEGE();
1591 portMEMORY_BARRIER();
1593 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1594 portMEMORY_BARRIER();
1596 portRESET_PRIVILEGE();
1597 portMEMORY_BARRIER();
1601 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet );
1606 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1607 /*-----------------------------------------------------------*/
1609 #if ( configUSE_QUEUE_SETS == 1 )
1610 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore,
1611 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */
1615 if( portIS_PRIVILEGED() == pdFALSE )
1617 portRAISE_PRIVILEGE();
1618 portMEMORY_BARRIER();
1620 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1621 portMEMORY_BARRIER();
1623 portRESET_PRIVILEGE();
1624 portMEMORY_BARRIER();
1628 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet );
1633 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */
1634 /*-----------------------------------------------------------*/
1636 #if configQUEUE_REGISTRY_SIZE > 0
1637 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue,
1638 const char * pcName ) /* FREERTOS_SYSTEM_CALL */
1640 if( portIS_PRIVILEGED() == pdFALSE )
1642 portRAISE_PRIVILEGE();
1643 portMEMORY_BARRIER();
1645 vQueueAddToRegistry( xQueue, pcName );
1646 portMEMORY_BARRIER();
1648 portRESET_PRIVILEGE();
1649 portMEMORY_BARRIER();
1653 vQueueAddToRegistry( xQueue, pcName );
1656 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1657 /*-----------------------------------------------------------*/
1659 #if configQUEUE_REGISTRY_SIZE > 0
1660 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1662 if( portIS_PRIVILEGED() == pdFALSE )
1664 portRAISE_PRIVILEGE();
1665 portMEMORY_BARRIER();
1667 vQueueUnregisterQueue( xQueue );
1668 portMEMORY_BARRIER();
1670 portRESET_PRIVILEGE();
1671 portMEMORY_BARRIER();
1675 vQueueUnregisterQueue( xQueue );
1678 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1679 /*-----------------------------------------------------------*/
1681 #if configQUEUE_REGISTRY_SIZE > 0
1682 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1684 const char * pcReturn;
1686 if( portIS_PRIVILEGED() == pdFALSE )
1688 portRAISE_PRIVILEGE();
1689 portMEMORY_BARRIER();
1691 pcReturn = pcQueueGetName( xQueue );
1692 portMEMORY_BARRIER();
1694 portRESET_PRIVILEGE();
1695 portMEMORY_BARRIER();
1699 pcReturn = pcQueueGetName( xQueue );
1704 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */
1705 /*-----------------------------------------------------------*/
1707 void MPU_vQueueDelete( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */
1709 if( portIS_PRIVILEGED() == pdFALSE )
1711 portRAISE_PRIVILEGE();
1712 portMEMORY_BARRIER();
1714 vQueueDelete( xQueue );
1715 portMEMORY_BARRIER();
1717 portRESET_PRIVILEGE();
1718 portMEMORY_BARRIER();
1722 vQueueDelete( xQueue );
1725 /*-----------------------------------------------------------*/
1727 #if ( configUSE_TIMERS == 1 )
1728 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1732 if( portIS_PRIVILEGED() == pdFALSE )
1734 portRAISE_PRIVILEGE();
1735 portMEMORY_BARRIER();
1737 pvReturn = pvTimerGetTimerID( xTimer );
1738 portMEMORY_BARRIER();
1740 portRESET_PRIVILEGE();
1741 portMEMORY_BARRIER();
1745 pvReturn = pvTimerGetTimerID( xTimer );
1750 #endif /* if ( configUSE_TIMERS == 1 ) */
1751 /*-----------------------------------------------------------*/
1753 #if ( configUSE_TIMERS == 1 )
1754 void MPU_vTimerSetTimerID( TimerHandle_t xTimer,
1755 void * pvNewID ) /* FREERTOS_SYSTEM_CALL */
1757 if( portIS_PRIVILEGED() == pdFALSE )
1759 portRAISE_PRIVILEGE();
1760 portMEMORY_BARRIER();
1762 vTimerSetTimerID( xTimer, pvNewID );
1763 portMEMORY_BARRIER();
1765 portRESET_PRIVILEGE();
1766 portMEMORY_BARRIER();
1770 vTimerSetTimerID( xTimer, pvNewID );
1773 #endif /* if ( configUSE_TIMERS == 1 ) */
1774 /*-----------------------------------------------------------*/
1776 #if ( configUSE_TIMERS == 1 )
1777 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1781 if( portIS_PRIVILEGED() == pdFALSE )
1783 portRAISE_PRIVILEGE();
1784 portMEMORY_BARRIER();
1786 xReturn = xTimerIsTimerActive( xTimer );
1787 portMEMORY_BARRIER();
1789 portRESET_PRIVILEGE();
1790 portMEMORY_BARRIER();
1794 xReturn = xTimerIsTimerActive( xTimer );
1799 #endif /* if ( configUSE_TIMERS == 1 ) */
1800 /*-----------------------------------------------------------*/
1802 #if ( configUSE_TIMERS == 1 )
1803 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */
1805 TaskHandle_t xReturn;
1807 if( portIS_PRIVILEGED() == pdFALSE )
1809 portRAISE_PRIVILEGE();
1810 portMEMORY_BARRIER();
1812 xReturn = xTimerGetTimerDaemonTaskHandle();
1813 portMEMORY_BARRIER();
1815 portRESET_PRIVILEGE();
1816 portMEMORY_BARRIER();
1820 xReturn = xTimerGetTimerDaemonTaskHandle();
1825 #endif /* if ( configUSE_TIMERS == 1 ) */
1826 /*-----------------------------------------------------------*/
1828 #if ( configUSE_TIMERS == 1 )
1829 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer,
1830 const BaseType_t xAutoReload ) /* FREERTOS_SYSTEM_CALL */
1832 if( portIS_PRIVILEGED() == pdFALSE )
1834 portRAISE_PRIVILEGE();
1835 portMEMORY_BARRIER();
1837 vTimerSetReloadMode( xTimer, xAutoReload );
1838 portMEMORY_BARRIER();
1840 portRESET_PRIVILEGE();
1841 portMEMORY_BARRIER();
1845 vTimerSetReloadMode( xTimer, xAutoReload );
1848 #endif /* if ( configUSE_TIMERS == 1 ) */
1849 /*-----------------------------------------------------------*/
1851 #if ( configUSE_TIMERS == 1 )
1852 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer )
1854 UBaseType_t uxReturn;
1856 if( portIS_PRIVILEGED() == pdFALSE )
1858 portRAISE_PRIVILEGE();
1859 portMEMORY_BARRIER();
1861 uxReturn = uxTimerGetReloadMode( xTimer );
1862 portMEMORY_BARRIER();
1864 portRESET_PRIVILEGE();
1865 portMEMORY_BARRIER();
1869 uxReturn = uxTimerGetReloadMode( xTimer );
1874 #endif /* if ( configUSE_TIMERS == 1 ) */
1875 /*-----------------------------------------------------------*/
1877 #if ( configUSE_TIMERS == 1 )
1878 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1880 const char * pcReturn;
1882 if( portIS_PRIVILEGED() == pdFALSE )
1884 portRAISE_PRIVILEGE();
1885 portMEMORY_BARRIER();
1887 pcReturn = pcTimerGetName( xTimer );
1888 portMEMORY_BARRIER();
1890 portRESET_PRIVILEGE();
1891 portMEMORY_BARRIER();
1895 pcReturn = pcTimerGetName( xTimer );
1900 #endif /* if ( configUSE_TIMERS == 1 ) */
1901 /*-----------------------------------------------------------*/
1903 #if ( configUSE_TIMERS == 1 )
1904 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1908 if( portIS_PRIVILEGED() == pdFALSE )
1910 portRAISE_PRIVILEGE();
1911 portMEMORY_BARRIER();
1913 xReturn = xTimerGetPeriod( xTimer );
1914 portMEMORY_BARRIER();
1916 portRESET_PRIVILEGE();
1917 portMEMORY_BARRIER();
1921 xReturn = xTimerGetPeriod( xTimer );
1926 #endif /* if ( configUSE_TIMERS == 1 ) */
1927 /*-----------------------------------------------------------*/
1929 #if ( configUSE_TIMERS == 1 )
1930 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */
1934 if( portIS_PRIVILEGED() == pdFALSE )
1936 portRAISE_PRIVILEGE();
1937 portMEMORY_BARRIER();
1939 xReturn = xTimerGetExpiryTime( xTimer );
1940 portMEMORY_BARRIER();
1942 portRESET_PRIVILEGE();
1943 portMEMORY_BARRIER();
1947 xReturn = xTimerGetExpiryTime( xTimer );
1952 #endif /* if ( configUSE_TIMERS == 1 ) */
1953 /*-----------------------------------------------------------*/
1955 #if ( configUSE_TIMERS == 1 )
1956 BaseType_t MPU_xTimerGenericCommandFromTask( TimerHandle_t xTimer,
1957 const BaseType_t xCommandID,
1958 const TickType_t xOptionalValue,
1959 BaseType_t * const pxHigherPriorityTaskWoken,
1960 const TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
1964 if( portIS_PRIVILEGED() == pdFALSE )
1966 portRAISE_PRIVILEGE();
1967 portMEMORY_BARRIER();
1969 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1970 portMEMORY_BARRIER();
1972 portRESET_PRIVILEGE();
1973 portMEMORY_BARRIER();
1977 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait );
1982 #endif /* if ( configUSE_TIMERS == 1 ) */
1983 /*-----------------------------------------------------------*/
1985 #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_EVENT_GROUPS == 1 ) )
1986 EventGroupHandle_t MPU_xEventGroupCreate( void ) /* FREERTOS_SYSTEM_CALL */
1988 EventGroupHandle_t xReturn;
1990 if( portIS_PRIVILEGED() == pdFALSE )
1992 portRAISE_PRIVILEGE();
1993 portMEMORY_BARRIER();
1995 xReturn = xEventGroupCreate();
1996 portMEMORY_BARRIER();
1998 portRESET_PRIVILEGE();
1999 portMEMORY_BARRIER();
2003 xReturn = xEventGroupCreate();
2008 #endif /* #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_EVENT_GROUPS == 1 ) ) */
2009 /*-----------------------------------------------------------*/
2011 #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_EVENT_GROUPS == 1 ) )
2012 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) /* FREERTOS_SYSTEM_CALL */
2014 EventGroupHandle_t xReturn;
2016 if( portIS_PRIVILEGED() == pdFALSE )
2018 portRAISE_PRIVILEGE();
2019 portMEMORY_BARRIER();
2021 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2022 portMEMORY_BARRIER();
2024 portRESET_PRIVILEGE();
2025 portMEMORY_BARRIER();
2029 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer );
2034 #endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_EVENT_GROUPS == 1 ) ) */
2035 /*-----------------------------------------------------------*/
2037 #if ( configUSE_EVENT_GROUPS == 1 )
2038 EventBits_t MPU_xEventGroupWaitBits( EventGroupHandle_t xEventGroup,
2039 const EventBits_t uxBitsToWaitFor,
2040 const BaseType_t xClearOnExit,
2041 const BaseType_t xWaitForAllBits,
2042 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2044 EventBits_t xReturn;
2046 if( portIS_PRIVILEGED() == pdFALSE )
2048 portRAISE_PRIVILEGE();
2049 portMEMORY_BARRIER();
2051 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2052 portMEMORY_BARRIER();
2054 portRESET_PRIVILEGE();
2055 portMEMORY_BARRIER();
2059 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait );
2064 #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
2065 /*-----------------------------------------------------------*/
2067 #if ( configUSE_EVENT_GROUPS == 1 )
2068 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup,
2069 const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */
2071 EventBits_t xReturn;
2073 if( portIS_PRIVILEGED() == pdFALSE )
2075 portRAISE_PRIVILEGE();
2076 portMEMORY_BARRIER();
2078 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2079 portMEMORY_BARRIER();
2081 portRESET_PRIVILEGE();
2082 portMEMORY_BARRIER();
2086 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear );
2091 #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
2092 /*-----------------------------------------------------------*/
2094 #if ( configUSE_EVENT_GROUPS == 1 )
2095 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup,
2096 const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */
2098 EventBits_t xReturn;
2100 if( portIS_PRIVILEGED() == pdFALSE )
2102 portRAISE_PRIVILEGE();
2103 portMEMORY_BARRIER();
2105 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2106 portMEMORY_BARRIER();
2108 portRESET_PRIVILEGE();
2109 portMEMORY_BARRIER();
2113 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet );
2118 #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
2119 /*-----------------------------------------------------------*/
2121 #if ( configUSE_EVENT_GROUPS == 1 )
2122 EventBits_t MPU_xEventGroupSync( EventGroupHandle_t xEventGroup,
2123 const EventBits_t uxBitsToSet,
2124 const EventBits_t uxBitsToWaitFor,
2125 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2127 EventBits_t xReturn;
2129 if( portIS_PRIVILEGED() == pdFALSE )
2131 portRAISE_PRIVILEGE();
2132 portMEMORY_BARRIER();
2134 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2135 portMEMORY_BARRIER();
2137 portRESET_PRIVILEGE();
2138 portMEMORY_BARRIER();
2142 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait );
2147 #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
2148 /*-----------------------------------------------------------*/
2150 #if ( configUSE_EVENT_GROUPS == 1 )
2151 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) /* FREERTOS_SYSTEM_CALL */
2153 if( portIS_PRIVILEGED() == pdFALSE )
2155 portRAISE_PRIVILEGE();
2156 portMEMORY_BARRIER();
2158 vEventGroupDelete( xEventGroup );
2159 portMEMORY_BARRIER();
2161 portRESET_PRIVILEGE();
2162 portMEMORY_BARRIER();
2166 vEventGroupDelete( xEventGroup );
2169 #endif /* #if ( configUSE_EVENT_GROUPS == 1 ) */
2170 /*-----------------------------------------------------------*/
2172 #if ( configUSE_STREAM_BUFFERS == 1 )
2173 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer,
2174 const void * pvTxData,
2175 size_t xDataLengthBytes,
2176 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2180 if( portIS_PRIVILEGED() == pdFALSE )
2182 portRAISE_PRIVILEGE();
2183 portMEMORY_BARRIER();
2185 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2186 portMEMORY_BARRIER();
2188 portRESET_PRIVILEGE();
2189 portMEMORY_BARRIER();
2193 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait );
2198 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2199 /*-----------------------------------------------------------*/
2201 #if ( configUSE_STREAM_BUFFERS == 1 )
2202 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2206 if( portIS_PRIVILEGED() == pdFALSE )
2208 portRAISE_PRIVILEGE();
2209 portMEMORY_BARRIER();
2211 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2212 portMEMORY_BARRIER();
2214 portRESET_PRIVILEGE();
2215 portMEMORY_BARRIER();
2219 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer );
2224 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2225 /*-----------------------------------------------------------*/
2227 #if ( configUSE_STREAM_BUFFERS == 1 )
2228 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer,
2230 size_t xBufferLengthBytes,
2231 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */
2235 if( portIS_PRIVILEGED() == pdFALSE )
2237 portRAISE_PRIVILEGE();
2238 portMEMORY_BARRIER();
2240 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2241 portMEMORY_BARRIER();
2243 portRESET_PRIVILEGE();
2244 portMEMORY_BARRIER();
2248 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait );
2253 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2254 /*-----------------------------------------------------------*/
2256 #if ( configUSE_STREAM_BUFFERS == 1 )
2257 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2259 if( portIS_PRIVILEGED() == pdFALSE )
2261 portRAISE_PRIVILEGE();
2262 portMEMORY_BARRIER();
2264 vStreamBufferDelete( xStreamBuffer );
2265 portMEMORY_BARRIER();
2267 portRESET_PRIVILEGE();
2268 portMEMORY_BARRIER();
2272 vStreamBufferDelete( xStreamBuffer );
2275 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2276 /*-----------------------------------------------------------*/
2278 #if ( configUSE_STREAM_BUFFERS == 1 )
2279 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2283 if( portIS_PRIVILEGED() == pdFALSE )
2285 portRAISE_PRIVILEGE();
2286 portMEMORY_BARRIER();
2288 xReturn = xStreamBufferIsFull( xStreamBuffer );
2289 portMEMORY_BARRIER();
2291 portRESET_PRIVILEGE();
2292 portMEMORY_BARRIER();
2296 xReturn = xStreamBufferIsFull( xStreamBuffer );
2301 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2302 /*-----------------------------------------------------------*/
2304 #if ( configUSE_STREAM_BUFFERS == 1 )
2305 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2309 if( portIS_PRIVILEGED() == pdFALSE )
2311 portRAISE_PRIVILEGE();
2312 portMEMORY_BARRIER();
2314 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2315 portMEMORY_BARRIER();
2317 portRESET_PRIVILEGE();
2318 portMEMORY_BARRIER();
2322 xReturn = xStreamBufferIsEmpty( xStreamBuffer );
2327 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2328 /*-----------------------------------------------------------*/
2330 #if ( configUSE_STREAM_BUFFERS == 1 )
2331 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2335 if( portIS_PRIVILEGED() == pdFALSE )
2337 portRAISE_PRIVILEGE();
2338 portMEMORY_BARRIER();
2340 xReturn = xStreamBufferReset( xStreamBuffer );
2341 portMEMORY_BARRIER();
2343 portRESET_PRIVILEGE();
2344 portMEMORY_BARRIER();
2348 xReturn = xStreamBufferReset( xStreamBuffer );
2353 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2354 /*-----------------------------------------------------------*/
2356 #if ( configUSE_STREAM_BUFFERS == 1 )
2357 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2361 if( portIS_PRIVILEGED() == pdFALSE )
2363 portRAISE_PRIVILEGE();
2364 portMEMORY_BARRIER();
2365 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2366 portMEMORY_BARRIER();
2368 portRESET_PRIVILEGE();
2369 portMEMORY_BARRIER();
2373 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer );
2378 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2379 /*-----------------------------------------------------------*/
2381 #if ( configUSE_STREAM_BUFFERS == 1 )
2382 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */
2386 if( portIS_PRIVILEGED() == pdFALSE )
2388 portRAISE_PRIVILEGE();
2389 portMEMORY_BARRIER();
2391 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2392 portMEMORY_BARRIER();
2394 portRESET_PRIVILEGE();
2395 portMEMORY_BARRIER();
2399 xReturn = xStreamBufferBytesAvailable( xStreamBuffer );
2404 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2405 /*-----------------------------------------------------------*/
2407 #if ( configUSE_STREAM_BUFFERS == 1 )
2408 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer,
2409 size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */
2413 if( portIS_PRIVILEGED() == pdFALSE )
2415 portRAISE_PRIVILEGE();
2416 portMEMORY_BARRIER();
2418 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2419 portMEMORY_BARRIER();
2421 portRESET_PRIVILEGE();
2422 portMEMORY_BARRIER();
2426 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel );
2431 #endif /* #if ( configUSE_STREAM_BUFFERS == 1 ) */
2432 /*-----------------------------------------------------------*/
2434 #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
2435 StreamBufferHandle_t MPU_xStreamBufferGenericCreate( size_t xBufferSizeBytes,
2436 size_t xTriggerLevelBytes,
2437 BaseType_t xStreamBufferType,
2438 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2439 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2441 StreamBufferHandle_t xReturn;
2444 * Stream buffer application level callback functionality is disabled for MPU
2447 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2448 ( pxReceiveCompletedCallback == NULL ) );
2450 if( ( pxSendCompletedCallback == NULL ) &&
2451 ( pxReceiveCompletedCallback == NULL ) )
2453 if( portIS_PRIVILEGED() == pdFALSE )
2455 portRAISE_PRIVILEGE();
2456 portMEMORY_BARRIER();
2458 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2463 portMEMORY_BARRIER();
2465 portRESET_PRIVILEGE();
2466 portMEMORY_BARRIER();
2470 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes,
2479 traceSTREAM_BUFFER_CREATE_FAILED( xStreamBufferType );
2485 #endif /* #if ( ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
2486 /*-----------------------------------------------------------*/
2488 #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) )
2489 StreamBufferHandle_t MPU_xStreamBufferGenericCreateStatic( size_t xBufferSizeBytes,
2490 size_t xTriggerLevelBytes,
2491 BaseType_t xStreamBufferType,
2492 uint8_t * const pucStreamBufferStorageArea,
2493 StaticStreamBuffer_t * const pxStaticStreamBuffer,
2494 StreamBufferCallbackFunction_t pxSendCompletedCallback,
2495 StreamBufferCallbackFunction_t pxReceiveCompletedCallback ) /* FREERTOS_SYSTEM_CALL */
2497 StreamBufferHandle_t xReturn;
2500 * Stream buffer application level callback functionality is disabled for MPU
2503 configASSERT( ( pxSendCompletedCallback == NULL ) &&
2504 ( pxReceiveCompletedCallback == NULL ) );
2506 if( ( pxSendCompletedCallback == NULL ) &&
2507 ( pxReceiveCompletedCallback == NULL ) )
2509 if( portIS_PRIVILEGED() == pdFALSE )
2511 portRAISE_PRIVILEGE();
2512 portMEMORY_BARRIER();
2514 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2517 pucStreamBufferStorageArea,
2518 pxStaticStreamBuffer,
2521 portMEMORY_BARRIER();
2523 portRESET_PRIVILEGE();
2524 portMEMORY_BARRIER();
2528 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes,
2531 pucStreamBufferStorageArea,
2532 pxStaticStreamBuffer,
2539 traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xStreamBufferType );
2545 #endif /* #if ( ( configSUPPORT_STATIC_ALLOCATION == 1 ) && ( configUSE_STREAM_BUFFERS == 1 ) ) */
2546 /*-----------------------------------------------------------*/
2549 /* Functions that the application writer wants to execute in privileged mode
2550 * can be defined in application_defined_privileged_functions.h. The functions
2551 * must take the same format as those above whereby the privilege state on exit
2552 * equals the privilege state on entry. For example:
2554 * void MPU_FunctionName( [parameters ] ) FREERTOS_SYSTEM_CALL;
2555 * void MPU_FunctionName( [parameters ] )
2557 * if( portIS_PRIVILEGED() == pdFALSE )
2559 * portRAISE_PRIVILEGE();
2560 * portMEMORY_BARRIER();
2562 * FunctionName( [parameters ] );
2563 * portMEMORY_BARRIER();
2565 * portRESET_PRIVILEGE();
2566 * portMEMORY_BARRIER();
2570 * FunctionName( [parameters ] );
2575 #if configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS == 1
2576 #include "application_defined_privileged_functions.h"
2578 /*-----------------------------------------------------------*/
2580 #endif /* #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) ) */
2581 /*-----------------------------------------------------------*/