1 /* 2 * FreeRTOS Kernel V11.0.1 3 * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. 4 * 5 * SPDX-License-Identifier: MIT 6 * 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: 13 * 14 * The above copyright notice and this permission notice shall be included in all 15 * copies or substantial portions of the Software. 16 * 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. 23 * 24 * https://www.FreeRTOS.org 25 * https://github.com/FreeRTOS 26 * 27 */ 28 29 /* 30 * Implementation of the wrapper functions used to raise the processor privilege 31 * before calling a standard FreeRTOS API function. 32 */ 33 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 38 39 /* Scheduler includes. */ 40 #include "FreeRTOS.h" 41 #include "task.h" 42 #include "queue.h" 43 #include "timers.h" 44 #include "event_groups.h" 45 #include "stream_buffer.h" 46 #include "mpu_prototypes.h" 47 48 #undef MPU_WRAPPERS_INCLUDED_FROM_API_FILE 49 /*-----------------------------------------------------------*/ 50 51 #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) ) 52 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. 55 #endif 56 57 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) MPU_xTaskCreate(TaskFunction_t pvTaskCode,const char * const pcName,uint16_t usStackDepth,void * pvParameters,UBaseType_t uxPriority,TaskHandle_t * pxCreatedTask)58 BaseType_t MPU_xTaskCreate( TaskFunction_t pvTaskCode, 59 const char * const pcName, 60 uint16_t usStackDepth, 61 void * pvParameters, 62 UBaseType_t uxPriority, 63 TaskHandle_t * pxCreatedTask ) /* FREERTOS_SYSTEM_CALL */ 64 { 65 BaseType_t xReturn; 66 67 if( portIS_PRIVILEGED() == pdFALSE ) 68 { 69 portRAISE_PRIVILEGE(); 70 portMEMORY_BARRIER(); 71 72 uxPriority = uxPriority & ~( portPRIVILEGE_BIT ); 73 portMEMORY_BARRIER(); 74 75 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask ); 76 portMEMORY_BARRIER(); 77 78 portRESET_PRIVILEGE(); 79 portMEMORY_BARRIER(); 80 } 81 else 82 { 83 xReturn = xTaskCreate( pvTaskCode, pcName, usStackDepth, pvParameters, uxPriority, pxCreatedTask ); 84 } 85 86 return xReturn; 87 } 88 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ 89 /*-----------------------------------------------------------*/ 90 91 #if ( configSUPPORT_STATIC_ALLOCATION == 1 ) MPU_xTaskCreateStatic(TaskFunction_t pxTaskCode,const char * const pcName,const uint32_t ulStackDepth,void * const pvParameters,UBaseType_t uxPriority,StackType_t * const puxStackBuffer,StaticTask_t * const pxTaskBuffer)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 */ 99 { 100 TaskHandle_t xReturn; 101 102 if( portIS_PRIVILEGED() == pdFALSE ) 103 { 104 portRAISE_PRIVILEGE(); 105 portMEMORY_BARRIER(); 106 107 uxPriority = uxPriority & ~( portPRIVILEGE_BIT ); 108 portMEMORY_BARRIER(); 109 110 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer ); 111 portMEMORY_BARRIER(); 112 113 portRESET_PRIVILEGE(); 114 portMEMORY_BARRIER(); 115 } 116 else 117 { 118 xReturn = xTaskCreateStatic( pxTaskCode, pcName, ulStackDepth, pvParameters, uxPriority, puxStackBuffer, pxTaskBuffer ); 119 } 120 121 return xReturn; 122 } 123 #endif /* configSUPPORT_STATIC_ALLOCATION */ 124 /*-----------------------------------------------------------*/ 125 126 #if ( INCLUDE_vTaskDelete == 1 ) MPU_vTaskDelete(TaskHandle_t pxTaskToDelete)127 void MPU_vTaskDelete( TaskHandle_t pxTaskToDelete ) /* FREERTOS_SYSTEM_CALL */ 128 { 129 if( portIS_PRIVILEGED() == pdFALSE ) 130 { 131 portRAISE_PRIVILEGE(); 132 portMEMORY_BARRIER(); 133 134 vTaskDelete( pxTaskToDelete ); 135 portMEMORY_BARRIER(); 136 137 portRESET_PRIVILEGE(); 138 portMEMORY_BARRIER(); 139 } 140 else 141 { 142 vTaskDelete( pxTaskToDelete ); 143 } 144 } 145 #endif /* if ( INCLUDE_vTaskDelete == 1 ) */ 146 /*-----------------------------------------------------------*/ 147 148 #if ( INCLUDE_xTaskDelayUntil == 1 ) MPU_xTaskDelayUntil(TickType_t * const pxPreviousWakeTime,TickType_t xTimeIncrement)149 BaseType_t MPU_xTaskDelayUntil( TickType_t * const pxPreviousWakeTime, 150 TickType_t xTimeIncrement ) /* FREERTOS_SYSTEM_CALL */ 151 { 152 BaseType_t xReturn; 153 154 if( portIS_PRIVILEGED() == pdFALSE ) 155 { 156 portRAISE_PRIVILEGE(); 157 portMEMORY_BARRIER(); 158 159 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement ); 160 portMEMORY_BARRIER(); 161 162 portRESET_PRIVILEGE(); 163 portMEMORY_BARRIER(); 164 } 165 else 166 { 167 xReturn = xTaskDelayUntil( pxPreviousWakeTime, xTimeIncrement ); 168 } 169 170 return xReturn; 171 } 172 #endif /* if ( INCLUDE_xTaskDelayUntil == 1 ) */ 173 /*-----------------------------------------------------------*/ 174 175 #if ( INCLUDE_xTaskAbortDelay == 1 ) MPU_xTaskAbortDelay(TaskHandle_t xTask)176 BaseType_t MPU_xTaskAbortDelay( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ 177 { 178 BaseType_t xReturn; 179 180 if( portIS_PRIVILEGED() == pdFALSE ) 181 { 182 portRAISE_PRIVILEGE(); 183 portMEMORY_BARRIER(); 184 185 xReturn = xTaskAbortDelay( xTask ); 186 portMEMORY_BARRIER(); 187 188 portRESET_PRIVILEGE(); 189 portMEMORY_BARRIER(); 190 } 191 else 192 { 193 xReturn = xTaskAbortDelay( xTask ); 194 } 195 196 return xReturn; 197 } 198 #endif /* if ( INCLUDE_xTaskAbortDelay == 1 ) */ 199 /*-----------------------------------------------------------*/ 200 201 #if ( INCLUDE_vTaskDelay == 1 ) MPU_vTaskDelay(TickType_t xTicksToDelay)202 void MPU_vTaskDelay( TickType_t xTicksToDelay ) /* FREERTOS_SYSTEM_CALL */ 203 { 204 if( portIS_PRIVILEGED() == pdFALSE ) 205 { 206 portRAISE_PRIVILEGE(); 207 portMEMORY_BARRIER(); 208 209 vTaskDelay( xTicksToDelay ); 210 portMEMORY_BARRIER(); 211 212 portRESET_PRIVILEGE(); 213 portMEMORY_BARRIER(); 214 } 215 else 216 { 217 vTaskDelay( xTicksToDelay ); 218 } 219 } 220 #endif /* if ( INCLUDE_vTaskDelay == 1 ) */ 221 /*-----------------------------------------------------------*/ 222 223 #if ( INCLUDE_uxTaskPriorityGet == 1 ) MPU_uxTaskPriorityGet(const TaskHandle_t pxTask)224 UBaseType_t MPU_uxTaskPriorityGet( const TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */ 225 { 226 UBaseType_t uxReturn; 227 228 if( portIS_PRIVILEGED() == pdFALSE ) 229 { 230 portRAISE_PRIVILEGE(); 231 portMEMORY_BARRIER(); 232 233 uxReturn = uxTaskPriorityGet( pxTask ); 234 portMEMORY_BARRIER(); 235 236 portRESET_PRIVILEGE(); 237 portMEMORY_BARRIER(); 238 } 239 else 240 { 241 uxReturn = uxTaskPriorityGet( pxTask ); 242 } 243 244 return uxReturn; 245 } 246 #endif /* if ( INCLUDE_uxTaskPriorityGet == 1 ) */ 247 /*-----------------------------------------------------------*/ 248 249 #if ( INCLUDE_vTaskPrioritySet == 1 ) MPU_vTaskPrioritySet(TaskHandle_t pxTask,UBaseType_t uxNewPriority)250 void MPU_vTaskPrioritySet( TaskHandle_t pxTask, 251 UBaseType_t uxNewPriority ) /* FREERTOS_SYSTEM_CALL */ 252 { 253 if( portIS_PRIVILEGED() == pdFALSE ) 254 { 255 portRAISE_PRIVILEGE(); 256 portMEMORY_BARRIER(); 257 258 vTaskPrioritySet( pxTask, uxNewPriority ); 259 portMEMORY_BARRIER(); 260 261 portRESET_PRIVILEGE(); 262 portMEMORY_BARRIER(); 263 } 264 else 265 { 266 vTaskPrioritySet( pxTask, uxNewPriority ); 267 } 268 } 269 #endif /* if ( INCLUDE_vTaskPrioritySet == 1 ) */ 270 /*-----------------------------------------------------------*/ 271 272 #if ( INCLUDE_eTaskGetState == 1 ) MPU_eTaskGetState(TaskHandle_t pxTask)273 eTaskState MPU_eTaskGetState( TaskHandle_t pxTask ) /* FREERTOS_SYSTEM_CALL */ 274 { 275 eTaskState eReturn; 276 277 if( portIS_PRIVILEGED() == pdFALSE ) 278 { 279 portRAISE_PRIVILEGE(); 280 portMEMORY_BARRIER(); 281 282 eReturn = eTaskGetState( pxTask ); 283 portMEMORY_BARRIER(); 284 285 portRESET_PRIVILEGE(); 286 portMEMORY_BARRIER(); 287 } 288 else 289 { 290 eReturn = eTaskGetState( pxTask ); 291 } 292 293 return eReturn; 294 } 295 #endif /* if ( INCLUDE_eTaskGetState == 1 ) */ 296 /*-----------------------------------------------------------*/ 297 298 #if ( configUSE_TRACE_FACILITY == 1 ) MPU_vTaskGetInfo(TaskHandle_t xTask,TaskStatus_t * pxTaskStatus,BaseType_t xGetFreeStackSpace,eTaskState eState)299 void MPU_vTaskGetInfo( TaskHandle_t xTask, 300 TaskStatus_t * pxTaskStatus, 301 BaseType_t xGetFreeStackSpace, 302 eTaskState eState ) /* FREERTOS_SYSTEM_CALL */ 303 { 304 if( portIS_PRIVILEGED() == pdFALSE ) 305 { 306 portRAISE_PRIVILEGE(); 307 portMEMORY_BARRIER(); 308 309 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState ); 310 portMEMORY_BARRIER(); 311 312 portRESET_PRIVILEGE(); 313 portMEMORY_BARRIER(); 314 } 315 else 316 { 317 vTaskGetInfo( xTask, pxTaskStatus, xGetFreeStackSpace, eState ); 318 } 319 } 320 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ 321 /*-----------------------------------------------------------*/ 322 323 #if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) MPU_xTaskGetIdleTaskHandle(void)324 TaskHandle_t MPU_xTaskGetIdleTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ 325 { 326 TaskHandle_t xReturn; 327 328 if( portIS_PRIVILEGED() == pdFALSE ) 329 { 330 portRAISE_PRIVILEGE(); 331 portMEMORY_BARRIER(); 332 xReturn = xTaskGetIdleTaskHandle(); 333 portMEMORY_BARRIER(); 334 335 portRESET_PRIVILEGE(); 336 portMEMORY_BARRIER(); 337 } 338 else 339 { 340 xReturn = xTaskGetIdleTaskHandle(); 341 } 342 343 return xReturn; 344 } 345 #endif /* if ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) */ 346 /*-----------------------------------------------------------*/ 347 348 #if ( INCLUDE_vTaskSuspend == 1 ) MPU_vTaskSuspend(TaskHandle_t pxTaskToSuspend)349 void MPU_vTaskSuspend( TaskHandle_t pxTaskToSuspend ) /* FREERTOS_SYSTEM_CALL */ 350 { 351 if( portIS_PRIVILEGED() == pdFALSE ) 352 { 353 portRAISE_PRIVILEGE(); 354 portMEMORY_BARRIER(); 355 356 vTaskSuspend( pxTaskToSuspend ); 357 portMEMORY_BARRIER(); 358 359 portRESET_PRIVILEGE(); 360 portMEMORY_BARRIER(); 361 } 362 else 363 { 364 vTaskSuspend( pxTaskToSuspend ); 365 } 366 } 367 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ 368 /*-----------------------------------------------------------*/ 369 370 #if ( INCLUDE_vTaskSuspend == 1 ) MPU_vTaskResume(TaskHandle_t pxTaskToResume)371 void MPU_vTaskResume( TaskHandle_t pxTaskToResume ) /* FREERTOS_SYSTEM_CALL */ 372 { 373 if( portIS_PRIVILEGED() == pdFALSE ) 374 { 375 portRAISE_PRIVILEGE(); 376 portMEMORY_BARRIER(); 377 378 vTaskResume( pxTaskToResume ); 379 portMEMORY_BARRIER(); 380 381 portRESET_PRIVILEGE(); 382 portMEMORY_BARRIER(); 383 } 384 else 385 { 386 vTaskResume( pxTaskToResume ); 387 } 388 } 389 #endif /* if ( INCLUDE_vTaskSuspend == 1 ) */ 390 /*-----------------------------------------------------------*/ 391 MPU_vTaskSuspendAll(void)392 void MPU_vTaskSuspendAll( void ) /* FREERTOS_SYSTEM_CALL */ 393 { 394 if( portIS_PRIVILEGED() == pdFALSE ) 395 { 396 portRAISE_PRIVILEGE(); 397 portMEMORY_BARRIER(); 398 399 vTaskSuspendAll(); 400 portMEMORY_BARRIER(); 401 402 portRESET_PRIVILEGE(); 403 portMEMORY_BARRIER(); 404 } 405 else 406 { 407 vTaskSuspendAll(); 408 } 409 } 410 /*-----------------------------------------------------------*/ 411 MPU_xTaskResumeAll(void)412 BaseType_t MPU_xTaskResumeAll( void ) /* FREERTOS_SYSTEM_CALL */ 413 { 414 BaseType_t xReturn; 415 416 if( portIS_PRIVILEGED() == pdFALSE ) 417 { 418 portRAISE_PRIVILEGE(); 419 portMEMORY_BARRIER(); 420 421 xReturn = xTaskResumeAll(); 422 portMEMORY_BARRIER(); 423 424 portRESET_PRIVILEGE(); 425 portMEMORY_BARRIER(); 426 } 427 else 428 { 429 xReturn = xTaskResumeAll(); 430 } 431 432 return xReturn; 433 } 434 /*-----------------------------------------------------------*/ 435 MPU_xTaskGetTickCount(void)436 TickType_t MPU_xTaskGetTickCount( void ) /* FREERTOS_SYSTEM_CALL */ 437 { 438 TickType_t xReturn; 439 440 if( portIS_PRIVILEGED() == pdFALSE ) 441 { 442 portRAISE_PRIVILEGE(); 443 portMEMORY_BARRIER(); 444 445 xReturn = xTaskGetTickCount(); 446 portMEMORY_BARRIER(); 447 448 portRESET_PRIVILEGE(); 449 portMEMORY_BARRIER(); 450 } 451 else 452 { 453 xReturn = xTaskGetTickCount(); 454 } 455 456 return xReturn; 457 } 458 /*-----------------------------------------------------------*/ 459 MPU_uxTaskGetNumberOfTasks(void)460 UBaseType_t MPU_uxTaskGetNumberOfTasks( void ) /* FREERTOS_SYSTEM_CALL */ 461 { 462 UBaseType_t uxReturn; 463 464 if( portIS_PRIVILEGED() == pdFALSE ) 465 { 466 portRAISE_PRIVILEGE(); 467 portMEMORY_BARRIER(); 468 469 uxReturn = uxTaskGetNumberOfTasks(); 470 portMEMORY_BARRIER(); 471 472 portRESET_PRIVILEGE(); 473 portMEMORY_BARRIER(); 474 } 475 else 476 { 477 uxReturn = uxTaskGetNumberOfTasks(); 478 } 479 480 return uxReturn; 481 } 482 /*-----------------------------------------------------------*/ 483 484 #if ( INCLUDE_xTaskGetHandle == 1 ) MPU_xTaskGetHandle(const char * pcNameToQuery)485 TaskHandle_t MPU_xTaskGetHandle( const char * pcNameToQuery ) /* FREERTOS_SYSTEM_CALL */ 486 { 487 TaskHandle_t xReturn; 488 489 if( portIS_PRIVILEGED() == pdFALSE ) 490 { 491 portRAISE_PRIVILEGE(); 492 portMEMORY_BARRIER(); 493 494 xReturn = xTaskGetHandle( pcNameToQuery ); 495 portMEMORY_BARRIER(); 496 497 portRESET_PRIVILEGE(); 498 portMEMORY_BARRIER(); 499 } 500 else 501 { 502 xReturn = xTaskGetHandle( pcNameToQuery ); 503 } 504 505 return xReturn; 506 } 507 #endif /* if ( INCLUDE_xTaskGetHandle == 1 ) */ 508 /*-----------------------------------------------------------*/ 509 510 #if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) MPU_vTaskList(char * pcWriteBuffer)511 void MPU_vTaskList( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */ 512 { 513 if( portIS_PRIVILEGED() == pdFALSE ) 514 { 515 portRAISE_PRIVILEGE(); 516 portMEMORY_BARRIER(); 517 518 vTaskList( pcWriteBuffer ); 519 portMEMORY_BARRIER(); 520 521 portRESET_PRIVILEGE(); 522 portMEMORY_BARRIER(); 523 } 524 else 525 { 526 vTaskList( pcWriteBuffer ); 527 } 528 } 529 #endif /* if ( ( configUSE_TRACE_FACILITY == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ 530 /*-----------------------------------------------------------*/ 531 532 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) MPU_vTaskGetRunTimeStats(char * pcWriteBuffer)533 void MPU_vTaskGetRunTimeStats( char * pcWriteBuffer ) /* FREERTOS_SYSTEM_CALL */ 534 { 535 if( portIS_PRIVILEGED() == pdFALSE ) 536 { 537 portRAISE_PRIVILEGE(); 538 portMEMORY_BARRIER(); 539 540 vTaskGetRunTimeStats( pcWriteBuffer ); 541 portMEMORY_BARRIER(); 542 543 portRESET_PRIVILEGE(); 544 portMEMORY_BARRIER(); 545 } 546 else 547 { 548 vTaskGetRunTimeStats( pcWriteBuffer ); 549 } 550 } 551 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( configUSE_STATS_FORMATTING_FUNCTIONS > 0 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ 552 /*-----------------------------------------------------------*/ 553 554 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) MPU_ulTaskGetIdleRunTimePercent(void)555 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimePercent( void ) /* FREERTOS_SYSTEM_CALL */ 556 { 557 configRUN_TIME_COUNTER_TYPE xReturn; 558 559 if( portIS_PRIVILEGED() == pdFALSE ) 560 { 561 portRAISE_PRIVILEGE(); 562 portMEMORY_BARRIER(); 563 564 xReturn = ulTaskGetIdleRunTimePercent(); 565 portMEMORY_BARRIER(); 566 567 portRESET_PRIVILEGE(); 568 portMEMORY_BARRIER(); 569 } 570 else 571 { 572 xReturn = ulTaskGetIdleRunTimePercent(); 573 } 574 575 return xReturn; 576 } 577 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ 578 /*-----------------------------------------------------------*/ 579 580 #if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) MPU_ulTaskGetIdleRunTimeCounter(void)581 configRUN_TIME_COUNTER_TYPE MPU_ulTaskGetIdleRunTimeCounter( void ) /* FREERTOS_SYSTEM_CALL */ 582 { 583 configRUN_TIME_COUNTER_TYPE xReturn; 584 585 if( portIS_PRIVILEGED() == pdFALSE ) 586 { 587 portRAISE_PRIVILEGE(); 588 portMEMORY_BARRIER(); 589 590 xReturn = ulTaskGetIdleRunTimeCounter(); 591 portMEMORY_BARRIER(); 592 593 portRESET_PRIVILEGE(); 594 portMEMORY_BARRIER(); 595 } 596 else 597 { 598 xReturn = ulTaskGetIdleRunTimeCounter(); 599 } 600 601 return xReturn; 602 } 603 #endif /* if ( ( configGENERATE_RUN_TIME_STATS == 1 ) && ( INCLUDE_xTaskGetIdleTaskHandle == 1 ) ) */ 604 /*-----------------------------------------------------------*/ 605 606 #if ( configUSE_APPLICATION_TASK_TAG == 1 ) MPU_vTaskSetApplicationTaskTag(TaskHandle_t xTask,TaskHookFunction_t pxTagValue)607 void MPU_vTaskSetApplicationTaskTag( TaskHandle_t xTask, 608 TaskHookFunction_t pxTagValue ) /* FREERTOS_SYSTEM_CALL */ 609 { 610 if( portIS_PRIVILEGED() == pdFALSE ) 611 { 612 portRAISE_PRIVILEGE(); 613 portMEMORY_BARRIER(); 614 615 vTaskSetApplicationTaskTag( xTask, pxTagValue ); 616 portMEMORY_BARRIER(); 617 618 portRESET_PRIVILEGE(); 619 portMEMORY_BARRIER(); 620 } 621 else 622 { 623 vTaskSetApplicationTaskTag( xTask, pxTagValue ); 624 } 625 } 626 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ 627 /*-----------------------------------------------------------*/ 628 629 #if ( configUSE_APPLICATION_TASK_TAG == 1 ) MPU_xTaskGetApplicationTaskTag(TaskHandle_t xTask)630 TaskHookFunction_t MPU_xTaskGetApplicationTaskTag( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ 631 { 632 TaskHookFunction_t xReturn; 633 634 if( portIS_PRIVILEGED() == pdFALSE ) 635 { 636 portRAISE_PRIVILEGE(); 637 portMEMORY_BARRIER(); 638 639 xReturn = xTaskGetApplicationTaskTag( xTask ); 640 portMEMORY_BARRIER(); 641 642 portRESET_PRIVILEGE(); 643 portMEMORY_BARRIER(); 644 } 645 else 646 { 647 xReturn = xTaskGetApplicationTaskTag( xTask ); 648 } 649 650 return xReturn; 651 } 652 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ 653 /*-----------------------------------------------------------*/ 654 655 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) MPU_vTaskSetThreadLocalStoragePointer(TaskHandle_t xTaskToSet,BaseType_t xIndex,void * pvValue)656 void MPU_vTaskSetThreadLocalStoragePointer( TaskHandle_t xTaskToSet, 657 BaseType_t xIndex, 658 void * pvValue ) /* FREERTOS_SYSTEM_CALL */ 659 { 660 if( portIS_PRIVILEGED() == pdFALSE ) 661 { 662 portRAISE_PRIVILEGE(); 663 portMEMORY_BARRIER(); 664 665 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue ); 666 portMEMORY_BARRIER(); 667 668 portRESET_PRIVILEGE(); 669 portMEMORY_BARRIER(); 670 } 671 else 672 { 673 vTaskSetThreadLocalStoragePointer( xTaskToSet, xIndex, pvValue ); 674 } 675 } 676 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ 677 /*-----------------------------------------------------------*/ 678 679 #if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) MPU_pvTaskGetThreadLocalStoragePointer(TaskHandle_t xTaskToQuery,BaseType_t xIndex)680 void * MPU_pvTaskGetThreadLocalStoragePointer( TaskHandle_t xTaskToQuery, 681 BaseType_t xIndex ) /* FREERTOS_SYSTEM_CALL */ 682 { 683 void * pvReturn; 684 685 if( portIS_PRIVILEGED() == pdFALSE ) 686 { 687 portRAISE_PRIVILEGE(); 688 portMEMORY_BARRIER(); 689 690 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex ); 691 portMEMORY_BARRIER(); 692 693 portRESET_PRIVILEGE(); 694 portMEMORY_BARRIER(); 695 } 696 else 697 { 698 pvReturn = pvTaskGetThreadLocalStoragePointer( xTaskToQuery, xIndex ); 699 } 700 701 return pvReturn; 702 } 703 #endif /* if ( configNUM_THREAD_LOCAL_STORAGE_POINTERS != 0 ) */ 704 /*-----------------------------------------------------------*/ 705 706 #if ( configUSE_APPLICATION_TASK_TAG == 1 ) MPU_xTaskCallApplicationTaskHook(TaskHandle_t xTask,void * pvParameter)707 BaseType_t MPU_xTaskCallApplicationTaskHook( TaskHandle_t xTask, 708 void * pvParameter ) /* FREERTOS_SYSTEM_CALL */ 709 { 710 BaseType_t xReturn; 711 712 if( portIS_PRIVILEGED() == pdFALSE ) 713 { 714 portRAISE_PRIVILEGE(); 715 portMEMORY_BARRIER(); 716 717 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter ); 718 portMEMORY_BARRIER(); 719 720 portRESET_PRIVILEGE(); 721 portMEMORY_BARRIER(); 722 } 723 else 724 { 725 xReturn = xTaskCallApplicationTaskHook( xTask, pvParameter ); 726 } 727 728 return xReturn; 729 } 730 #endif /* if ( configUSE_APPLICATION_TASK_TAG == 1 ) */ 731 /*-----------------------------------------------------------*/ 732 733 #if ( configUSE_TRACE_FACILITY == 1 ) MPU_uxTaskGetSystemState(TaskStatus_t * pxTaskStatusArray,UBaseType_t uxArraySize,configRUN_TIME_COUNTER_TYPE * pulTotalRunTime)734 UBaseType_t MPU_uxTaskGetSystemState( TaskStatus_t * pxTaskStatusArray, 735 UBaseType_t uxArraySize, 736 configRUN_TIME_COUNTER_TYPE * pulTotalRunTime ) /* FREERTOS_SYSTEM_CALL */ 737 { 738 UBaseType_t uxReturn; 739 740 if( portIS_PRIVILEGED() == pdFALSE ) 741 { 742 portRAISE_PRIVILEGE(); 743 portMEMORY_BARRIER(); 744 745 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime ); 746 portMEMORY_BARRIER(); 747 748 portRESET_PRIVILEGE(); 749 portMEMORY_BARRIER(); 750 } 751 else 752 { 753 uxReturn = uxTaskGetSystemState( pxTaskStatusArray, uxArraySize, pulTotalRunTime ); 754 } 755 756 return uxReturn; 757 } 758 #endif /* if ( configUSE_TRACE_FACILITY == 1 ) */ 759 /*-----------------------------------------------------------*/ 760 MPU_xTaskCatchUpTicks(TickType_t xTicksToCatchUp)761 BaseType_t MPU_xTaskCatchUpTicks( TickType_t xTicksToCatchUp ) /* FREERTOS_SYSTEM_CALL */ 762 { 763 BaseType_t xReturn; 764 765 if( portIS_PRIVILEGED() == pdFALSE ) 766 { 767 portRAISE_PRIVILEGE(); 768 portMEMORY_BARRIER(); 769 770 xReturn = xTaskCatchUpTicks( xTicksToCatchUp ); 771 portMEMORY_BARRIER(); 772 773 portRESET_PRIVILEGE(); 774 portMEMORY_BARRIER(); 775 } 776 else 777 { 778 xReturn = xTaskCatchUpTicks( xTicksToCatchUp ); 779 } 780 781 return xReturn; 782 } 783 /*-----------------------------------------------------------*/ 784 785 #if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) MPU_uxTaskGetStackHighWaterMark(TaskHandle_t xTask)786 UBaseType_t MPU_uxTaskGetStackHighWaterMark( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ 787 { 788 UBaseType_t uxReturn; 789 790 if( portIS_PRIVILEGED() == pdFALSE ) 791 { 792 portRAISE_PRIVILEGE(); 793 portMEMORY_BARRIER(); 794 795 uxReturn = uxTaskGetStackHighWaterMark( xTask ); 796 portMEMORY_BARRIER(); 797 798 portRESET_PRIVILEGE(); 799 portMEMORY_BARRIER(); 800 } 801 else 802 { 803 uxReturn = uxTaskGetStackHighWaterMark( xTask ); 804 } 805 806 return uxReturn; 807 } 808 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark == 1 ) */ 809 /*-----------------------------------------------------------*/ 810 811 #if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) MPU_uxTaskGetStackHighWaterMark2(TaskHandle_t xTask)812 configSTACK_DEPTH_TYPE MPU_uxTaskGetStackHighWaterMark2( TaskHandle_t xTask ) /* FREERTOS_SYSTEM_CALL */ 813 { 814 configSTACK_DEPTH_TYPE uxReturn; 815 816 if( portIS_PRIVILEGED() == pdFALSE ) 817 { 818 portRAISE_PRIVILEGE(); 819 portMEMORY_BARRIER(); 820 821 uxReturn = uxTaskGetStackHighWaterMark2( xTask ); 822 portMEMORY_BARRIER(); 823 824 portRESET_PRIVILEGE(); 825 portMEMORY_BARRIER(); 826 } 827 else 828 { 829 uxReturn = uxTaskGetStackHighWaterMark2( xTask ); 830 } 831 832 return uxReturn; 833 } 834 #endif /* if ( INCLUDE_uxTaskGetStackHighWaterMark2 == 1 ) */ 835 /*-----------------------------------------------------------*/ 836 837 #if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) MPU_xTaskGetCurrentTaskHandle(void)838 TaskHandle_t MPU_xTaskGetCurrentTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ 839 { 840 TaskHandle_t xReturn; 841 842 if( portIS_PRIVILEGED() == pdFALSE ) 843 { 844 portRAISE_PRIVILEGE(); 845 portMEMORY_BARRIER(); 846 xReturn = xTaskGetCurrentTaskHandle(); 847 portMEMORY_BARRIER(); 848 849 portRESET_PRIVILEGE(); 850 portMEMORY_BARRIER(); 851 } 852 else 853 { 854 xReturn = xTaskGetCurrentTaskHandle(); 855 } 856 857 return xReturn; 858 } 859 #endif /* if ( ( INCLUDE_xTaskGetCurrentTaskHandle == 1 ) || ( configUSE_MUTEXES == 1 ) ) */ 860 /*-----------------------------------------------------------*/ 861 862 #if ( INCLUDE_xTaskGetSchedulerState == 1 ) MPU_xTaskGetSchedulerState(void)863 BaseType_t MPU_xTaskGetSchedulerState( void ) /* FREERTOS_SYSTEM_CALL */ 864 { 865 BaseType_t xReturn; 866 867 if( portIS_PRIVILEGED() == pdFALSE ) 868 { 869 portRAISE_PRIVILEGE(); 870 portMEMORY_BARRIER(); 871 872 xReturn = xTaskGetSchedulerState(); 873 portMEMORY_BARRIER(); 874 875 portRESET_PRIVILEGE(); 876 portMEMORY_BARRIER(); 877 } 878 else 879 { 880 xReturn = xTaskGetSchedulerState(); 881 } 882 883 return xReturn; 884 } 885 #endif /* if ( INCLUDE_xTaskGetSchedulerState == 1 ) */ 886 /*-----------------------------------------------------------*/ 887 MPU_vTaskSetTimeOutState(TimeOut_t * const pxTimeOut)888 void MPU_vTaskSetTimeOutState( TimeOut_t * const pxTimeOut ) /* FREERTOS_SYSTEM_CALL */ 889 { 890 if( portIS_PRIVILEGED() == pdFALSE ) 891 { 892 portRAISE_PRIVILEGE(); 893 portMEMORY_BARRIER(); 894 895 vTaskSetTimeOutState( pxTimeOut ); 896 portMEMORY_BARRIER(); 897 898 portRESET_PRIVILEGE(); 899 portMEMORY_BARRIER(); 900 } 901 else 902 { 903 vTaskSetTimeOutState( pxTimeOut ); 904 } 905 } 906 /*-----------------------------------------------------------*/ 907 MPU_xTaskCheckForTimeOut(TimeOut_t * const pxTimeOut,TickType_t * const pxTicksToWait)908 BaseType_t MPU_xTaskCheckForTimeOut( TimeOut_t * const pxTimeOut, 909 TickType_t * const pxTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 910 { 911 BaseType_t xReturn; 912 913 if( portIS_PRIVILEGED() == pdFALSE ) 914 { 915 portRAISE_PRIVILEGE(); 916 portMEMORY_BARRIER(); 917 918 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait ); 919 portMEMORY_BARRIER(); 920 921 portRESET_PRIVILEGE(); 922 portMEMORY_BARRIER(); 923 } 924 else 925 { 926 xReturn = xTaskCheckForTimeOut( pxTimeOut, pxTicksToWait ); 927 } 928 929 return xReturn; 930 } 931 /*-----------------------------------------------------------*/ 932 933 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) MPU_xTaskGenericNotify(TaskHandle_t xTaskToNotify,UBaseType_t uxIndexToNotify,uint32_t ulValue,eNotifyAction eAction,uint32_t * pulPreviousNotificationValue)934 BaseType_t MPU_xTaskGenericNotify( TaskHandle_t xTaskToNotify, 935 UBaseType_t uxIndexToNotify, 936 uint32_t ulValue, 937 eNotifyAction eAction, 938 uint32_t * pulPreviousNotificationValue ) /* FREERTOS_SYSTEM_CALL */ 939 { 940 BaseType_t xReturn; 941 942 if( portIS_PRIVILEGED() == pdFALSE ) 943 { 944 portRAISE_PRIVILEGE(); 945 portMEMORY_BARRIER(); 946 947 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue ); 948 portMEMORY_BARRIER(); 949 950 portRESET_PRIVILEGE(); 951 portMEMORY_BARRIER(); 952 } 953 else 954 { 955 xReturn = xTaskGenericNotify( xTaskToNotify, uxIndexToNotify, ulValue, eAction, pulPreviousNotificationValue ); 956 } 957 958 return xReturn; 959 } 960 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 961 /*-----------------------------------------------------------*/ 962 963 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) MPU_xTaskGenericNotifyWait(UBaseType_t uxIndexToWaitOn,uint32_t ulBitsToClearOnEntry,uint32_t ulBitsToClearOnExit,uint32_t * pulNotificationValue,TickType_t xTicksToWait)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 */ 969 { 970 BaseType_t xReturn; 971 972 if( portIS_PRIVILEGED() == pdFALSE ) 973 { 974 portRAISE_PRIVILEGE(); 975 portMEMORY_BARRIER(); 976 977 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait ); 978 portMEMORY_BARRIER(); 979 980 portRESET_PRIVILEGE(); 981 portMEMORY_BARRIER(); 982 } 983 else 984 { 985 xReturn = xTaskGenericNotifyWait( uxIndexToWaitOn, ulBitsToClearOnEntry, ulBitsToClearOnExit, pulNotificationValue, xTicksToWait ); 986 } 987 988 return xReturn; 989 } 990 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 991 /*-----------------------------------------------------------*/ 992 993 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) MPU_ulTaskGenericNotifyTake(UBaseType_t uxIndexToWaitOn,BaseType_t xClearCountOnExit,TickType_t xTicksToWait)994 uint32_t MPU_ulTaskGenericNotifyTake( UBaseType_t uxIndexToWaitOn, 995 BaseType_t xClearCountOnExit, 996 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 997 { 998 uint32_t ulReturn; 999 1000 if( portIS_PRIVILEGED() == pdFALSE ) 1001 { 1002 portRAISE_PRIVILEGE(); 1003 portMEMORY_BARRIER(); 1004 1005 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait ); 1006 portMEMORY_BARRIER(); 1007 1008 portRESET_PRIVILEGE(); 1009 portMEMORY_BARRIER(); 1010 } 1011 else 1012 { 1013 ulReturn = ulTaskGenericNotifyTake( uxIndexToWaitOn, xClearCountOnExit, xTicksToWait ); 1014 } 1015 1016 return ulReturn; 1017 } 1018 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 1019 /*-----------------------------------------------------------*/ 1020 1021 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) MPU_xTaskGenericNotifyStateClear(TaskHandle_t xTask,UBaseType_t uxIndexToClear)1022 BaseType_t MPU_xTaskGenericNotifyStateClear( TaskHandle_t xTask, 1023 UBaseType_t uxIndexToClear ) /* FREERTOS_SYSTEM_CALL */ 1024 { 1025 BaseType_t xReturn; 1026 1027 if( portIS_PRIVILEGED() == pdFALSE ) 1028 { 1029 portRAISE_PRIVILEGE(); 1030 portMEMORY_BARRIER(); 1031 1032 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear ); 1033 portMEMORY_BARRIER(); 1034 1035 portRESET_PRIVILEGE(); 1036 portMEMORY_BARRIER(); 1037 } 1038 else 1039 { 1040 xReturn = xTaskGenericNotifyStateClear( xTask, uxIndexToClear ); 1041 } 1042 1043 return xReturn; 1044 } 1045 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 1046 /*-----------------------------------------------------------*/ 1047 1048 #if ( configUSE_TASK_NOTIFICATIONS == 1 ) MPU_ulTaskGenericNotifyValueClear(TaskHandle_t xTask,UBaseType_t uxIndexToClear,uint32_t ulBitsToClear)1049 uint32_t MPU_ulTaskGenericNotifyValueClear( TaskHandle_t xTask, 1050 UBaseType_t uxIndexToClear, 1051 uint32_t ulBitsToClear ) /* FREERTOS_SYSTEM_CALL */ 1052 { 1053 uint32_t ulReturn; 1054 1055 if( portIS_PRIVILEGED() == pdFALSE ) 1056 { 1057 portRAISE_PRIVILEGE(); 1058 portMEMORY_BARRIER(); 1059 1060 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear ); 1061 portMEMORY_BARRIER(); 1062 1063 portRESET_PRIVILEGE(); 1064 portMEMORY_BARRIER(); 1065 } 1066 else 1067 { 1068 ulReturn = ulTaskGenericNotifyValueClear( xTask, uxIndexToClear, ulBitsToClear ); 1069 } 1070 1071 return ulReturn; 1072 } 1073 #endif /* if ( configUSE_TASK_NOTIFICATIONS == 1 ) */ 1074 /*-----------------------------------------------------------*/ 1075 1076 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) MPU_xQueueGenericCreate(UBaseType_t uxQueueLength,UBaseType_t uxItemSize,uint8_t ucQueueType)1077 QueueHandle_t MPU_xQueueGenericCreate( UBaseType_t uxQueueLength, 1078 UBaseType_t uxItemSize, 1079 uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */ 1080 { 1081 QueueHandle_t xReturn; 1082 1083 if( portIS_PRIVILEGED() == pdFALSE ) 1084 { 1085 portRAISE_PRIVILEGE(); 1086 portMEMORY_BARRIER(); 1087 1088 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType ); 1089 portMEMORY_BARRIER(); 1090 1091 portRESET_PRIVILEGE(); 1092 portMEMORY_BARRIER(); 1093 } 1094 else 1095 { 1096 xReturn = xQueueGenericCreate( uxQueueLength, uxItemSize, ucQueueType ); 1097 } 1098 1099 return xReturn; 1100 } 1101 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */ 1102 /*-----------------------------------------------------------*/ 1103 1104 #if ( configSUPPORT_STATIC_ALLOCATION == 1 ) MPU_xQueueGenericCreateStatic(const UBaseType_t uxQueueLength,const UBaseType_t uxItemSize,uint8_t * pucQueueStorage,StaticQueue_t * pxStaticQueue,const uint8_t ucQueueType)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 */ 1110 { 1111 QueueHandle_t xReturn; 1112 1113 if( portIS_PRIVILEGED() == pdFALSE ) 1114 { 1115 portRAISE_PRIVILEGE(); 1116 portMEMORY_BARRIER(); 1117 1118 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType ); 1119 portMEMORY_BARRIER(); 1120 1121 portRESET_PRIVILEGE(); 1122 portMEMORY_BARRIER(); 1123 } 1124 else 1125 { 1126 xReturn = xQueueGenericCreateStatic( uxQueueLength, uxItemSize, pucQueueStorage, pxStaticQueue, ucQueueType ); 1127 } 1128 1129 return xReturn; 1130 } 1131 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ 1132 /*-----------------------------------------------------------*/ 1133 MPU_xQueueGenericReset(QueueHandle_t pxQueue,BaseType_t xNewQueue)1134 BaseType_t MPU_xQueueGenericReset( QueueHandle_t pxQueue, 1135 BaseType_t xNewQueue ) /* FREERTOS_SYSTEM_CALL */ 1136 { 1137 BaseType_t xReturn; 1138 1139 if( portIS_PRIVILEGED() == pdFALSE ) 1140 { 1141 portRAISE_PRIVILEGE(); 1142 portMEMORY_BARRIER(); 1143 1144 xReturn = xQueueGenericReset( pxQueue, xNewQueue ); 1145 portMEMORY_BARRIER(); 1146 1147 portRESET_PRIVILEGE(); 1148 portMEMORY_BARRIER(); 1149 } 1150 else 1151 { 1152 xReturn = xQueueGenericReset( pxQueue, xNewQueue ); 1153 } 1154 1155 return xReturn; 1156 } 1157 /*-----------------------------------------------------------*/ 1158 MPU_xQueueGenericSend(QueueHandle_t xQueue,const void * const pvItemToQueue,TickType_t xTicksToWait,BaseType_t xCopyPosition)1159 BaseType_t MPU_xQueueGenericSend( QueueHandle_t xQueue, 1160 const void * const pvItemToQueue, 1161 TickType_t xTicksToWait, 1162 BaseType_t xCopyPosition ) /* FREERTOS_SYSTEM_CALL */ 1163 { 1164 BaseType_t xReturn; 1165 1166 if( portIS_PRIVILEGED() == pdFALSE ) 1167 { 1168 portRAISE_PRIVILEGE(); 1169 portMEMORY_BARRIER(); 1170 1171 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition ); 1172 portMEMORY_BARRIER(); 1173 1174 portRESET_PRIVILEGE(); 1175 portMEMORY_BARRIER(); 1176 } 1177 else 1178 { 1179 xReturn = xQueueGenericSend( xQueue, pvItemToQueue, xTicksToWait, xCopyPosition ); 1180 } 1181 1182 return xReturn; 1183 } 1184 /*-----------------------------------------------------------*/ 1185 MPU_uxQueueMessagesWaiting(const QueueHandle_t pxQueue)1186 UBaseType_t MPU_uxQueueMessagesWaiting( const QueueHandle_t pxQueue ) /* FREERTOS_SYSTEM_CALL */ 1187 { 1188 UBaseType_t uxReturn; 1189 1190 if( portIS_PRIVILEGED() == pdFALSE ) 1191 { 1192 portRAISE_PRIVILEGE(); 1193 portMEMORY_BARRIER(); 1194 1195 uxReturn = uxQueueMessagesWaiting( pxQueue ); 1196 portMEMORY_BARRIER(); 1197 1198 portRESET_PRIVILEGE(); 1199 portMEMORY_BARRIER(); 1200 } 1201 else 1202 { 1203 uxReturn = uxQueueMessagesWaiting( pxQueue ); 1204 } 1205 1206 return uxReturn; 1207 } 1208 /*-----------------------------------------------------------*/ 1209 MPU_uxQueueSpacesAvailable(const QueueHandle_t xQueue)1210 UBaseType_t MPU_uxQueueSpacesAvailable( const QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ 1211 { 1212 UBaseType_t uxReturn; 1213 1214 if( portIS_PRIVILEGED() == pdFALSE ) 1215 { 1216 portRAISE_PRIVILEGE(); 1217 portMEMORY_BARRIER(); 1218 1219 uxReturn = uxQueueSpacesAvailable( xQueue ); 1220 portMEMORY_BARRIER(); 1221 1222 portRESET_PRIVILEGE(); 1223 portMEMORY_BARRIER(); 1224 } 1225 else 1226 { 1227 uxReturn = uxQueueSpacesAvailable( xQueue ); 1228 } 1229 1230 return uxReturn; 1231 } 1232 /*-----------------------------------------------------------*/ 1233 MPU_xQueueReceive(QueueHandle_t pxQueue,void * const pvBuffer,TickType_t xTicksToWait)1234 BaseType_t MPU_xQueueReceive( QueueHandle_t pxQueue, 1235 void * const pvBuffer, 1236 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 1237 { 1238 BaseType_t xReturn; 1239 1240 if( portIS_PRIVILEGED() == pdFALSE ) 1241 { 1242 portRAISE_PRIVILEGE(); 1243 portMEMORY_BARRIER(); 1244 1245 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait ); 1246 portMEMORY_BARRIER(); 1247 1248 portRESET_PRIVILEGE(); 1249 portMEMORY_BARRIER(); 1250 } 1251 else 1252 { 1253 xReturn = xQueueReceive( pxQueue, pvBuffer, xTicksToWait ); 1254 } 1255 1256 return xReturn; 1257 } 1258 /*-----------------------------------------------------------*/ 1259 MPU_xQueuePeek(QueueHandle_t xQueue,void * const pvBuffer,TickType_t xTicksToWait)1260 BaseType_t MPU_xQueuePeek( QueueHandle_t xQueue, 1261 void * const pvBuffer, 1262 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 1263 { 1264 BaseType_t xReturn; 1265 1266 if( portIS_PRIVILEGED() == pdFALSE ) 1267 { 1268 portRAISE_PRIVILEGE(); 1269 portMEMORY_BARRIER(); 1270 1271 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait ); 1272 portMEMORY_BARRIER(); 1273 1274 portRESET_PRIVILEGE(); 1275 portMEMORY_BARRIER(); 1276 } 1277 else 1278 { 1279 xReturn = xQueuePeek( xQueue, pvBuffer, xTicksToWait ); 1280 } 1281 1282 return xReturn; 1283 } 1284 /*-----------------------------------------------------------*/ 1285 MPU_xQueueSemaphoreTake(QueueHandle_t xQueue,TickType_t xTicksToWait)1286 BaseType_t MPU_xQueueSemaphoreTake( QueueHandle_t xQueue, 1287 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 1288 { 1289 BaseType_t xReturn; 1290 1291 if( portIS_PRIVILEGED() == pdFALSE ) 1292 { 1293 portRAISE_PRIVILEGE(); 1294 portMEMORY_BARRIER(); 1295 1296 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait ); 1297 portMEMORY_BARRIER(); 1298 1299 portRESET_PRIVILEGE(); 1300 portMEMORY_BARRIER(); 1301 } 1302 else 1303 { 1304 xReturn = xQueueSemaphoreTake( xQueue, xTicksToWait ); 1305 } 1306 1307 return xReturn; 1308 } 1309 /*-----------------------------------------------------------*/ 1310 1311 #if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) MPU_xQueueGetMutexHolder(QueueHandle_t xSemaphore)1312 TaskHandle_t MPU_xQueueGetMutexHolder( QueueHandle_t xSemaphore ) /* FREERTOS_SYSTEM_CALL */ 1313 { 1314 void * xReturn; 1315 1316 if( portIS_PRIVILEGED() == pdFALSE ) 1317 { 1318 portRAISE_PRIVILEGE(); 1319 portMEMORY_BARRIER(); 1320 1321 xReturn = xQueueGetMutexHolder( xSemaphore ); 1322 portMEMORY_BARRIER(); 1323 1324 portRESET_PRIVILEGE(); 1325 portMEMORY_BARRIER(); 1326 } 1327 else 1328 { 1329 xReturn = xQueueGetMutexHolder( xSemaphore ); 1330 } 1331 1332 return xReturn; 1333 } 1334 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( INCLUDE_xSemaphoreGetMutexHolder == 1 ) ) */ 1335 /*-----------------------------------------------------------*/ 1336 1337 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) MPU_xQueueCreateMutex(const uint8_t ucQueueType)1338 QueueHandle_t MPU_xQueueCreateMutex( const uint8_t ucQueueType ) /* FREERTOS_SYSTEM_CALL */ 1339 { 1340 QueueHandle_t xReturn; 1341 1342 if( portIS_PRIVILEGED() == pdFALSE ) 1343 { 1344 portRAISE_PRIVILEGE(); 1345 portMEMORY_BARRIER(); 1346 1347 xReturn = xQueueCreateMutex( ucQueueType ); 1348 portMEMORY_BARRIER(); 1349 1350 portRESET_PRIVILEGE(); 1351 portMEMORY_BARRIER(); 1352 } 1353 else 1354 { 1355 xReturn = xQueueCreateMutex( ucQueueType ); 1356 } 1357 1358 return xReturn; 1359 } 1360 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ 1361 /*-----------------------------------------------------------*/ 1362 1363 #if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) MPU_xQueueCreateMutexStatic(const uint8_t ucQueueType,StaticQueue_t * pxStaticQueue)1364 QueueHandle_t MPU_xQueueCreateMutexStatic( const uint8_t ucQueueType, 1365 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */ 1366 { 1367 QueueHandle_t xReturn; 1368 1369 if( portIS_PRIVILEGED() == pdFALSE ) 1370 { 1371 portRAISE_PRIVILEGE(); 1372 portMEMORY_BARRIER(); 1373 1374 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue ); 1375 portMEMORY_BARRIER(); 1376 1377 portRESET_PRIVILEGE(); 1378 portMEMORY_BARRIER(); 1379 } 1380 else 1381 { 1382 xReturn = xQueueCreateMutexStatic( ucQueueType, pxStaticQueue ); 1383 } 1384 1385 return xReturn; 1386 } 1387 #endif /* if ( ( configUSE_MUTEXES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */ 1388 /*-----------------------------------------------------------*/ 1389 1390 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) MPU_xQueueCreateCountingSemaphore(UBaseType_t uxCountValue,UBaseType_t uxInitialCount)1391 QueueHandle_t MPU_xQueueCreateCountingSemaphore( UBaseType_t uxCountValue, 1392 UBaseType_t uxInitialCount ) /* FREERTOS_SYSTEM_CALL */ 1393 { 1394 QueueHandle_t xReturn; 1395 1396 if( portIS_PRIVILEGED() == pdFALSE ) 1397 { 1398 portRAISE_PRIVILEGE(); 1399 portMEMORY_BARRIER(); 1400 1401 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount ); 1402 portMEMORY_BARRIER(); 1403 1404 portRESET_PRIVILEGE(); 1405 portMEMORY_BARRIER(); 1406 } 1407 else 1408 { 1409 xReturn = xQueueCreateCountingSemaphore( uxCountValue, uxInitialCount ); 1410 } 1411 1412 return xReturn; 1413 } 1414 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ 1415 /*-----------------------------------------------------------*/ 1416 1417 #if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) 1418 MPU_xQueueCreateCountingSemaphoreStatic(const UBaseType_t uxMaxCount,const UBaseType_t uxInitialCount,StaticQueue_t * pxStaticQueue)1419 QueueHandle_t MPU_xQueueCreateCountingSemaphoreStatic( const UBaseType_t uxMaxCount, 1420 const UBaseType_t uxInitialCount, 1421 StaticQueue_t * pxStaticQueue ) /* FREERTOS_SYSTEM_CALL */ 1422 { 1423 QueueHandle_t xReturn; 1424 1425 if( portIS_PRIVILEGED() == pdFALSE ) 1426 { 1427 portRAISE_PRIVILEGE(); 1428 portMEMORY_BARRIER(); 1429 1430 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue ); 1431 portMEMORY_BARRIER(); 1432 1433 portRESET_PRIVILEGE(); 1434 portMEMORY_BARRIER(); 1435 } 1436 else 1437 { 1438 xReturn = xQueueCreateCountingSemaphoreStatic( uxMaxCount, uxInitialCount, pxStaticQueue ); 1439 } 1440 1441 return xReturn; 1442 } 1443 #endif /* if ( ( configUSE_COUNTING_SEMAPHORES == 1 ) && ( configSUPPORT_STATIC_ALLOCATION == 1 ) ) */ 1444 /*-----------------------------------------------------------*/ 1445 1446 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) MPU_xQueueTakeMutexRecursive(QueueHandle_t xMutex,TickType_t xBlockTime)1447 BaseType_t MPU_xQueueTakeMutexRecursive( QueueHandle_t xMutex, 1448 TickType_t xBlockTime ) /* FREERTOS_SYSTEM_CALL */ 1449 { 1450 BaseType_t xReturn; 1451 1452 if( portIS_PRIVILEGED() == pdFALSE ) 1453 { 1454 portRAISE_PRIVILEGE(); 1455 portMEMORY_BARRIER(); 1456 1457 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime ); 1458 portMEMORY_BARRIER(); 1459 1460 portRESET_PRIVILEGE(); 1461 portMEMORY_BARRIER(); 1462 } 1463 else 1464 { 1465 xReturn = xQueueTakeMutexRecursive( xMutex, xBlockTime ); 1466 } 1467 1468 return xReturn; 1469 } 1470 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ 1471 /*-----------------------------------------------------------*/ 1472 1473 #if ( configUSE_RECURSIVE_MUTEXES == 1 ) MPU_xQueueGiveMutexRecursive(QueueHandle_t xMutex)1474 BaseType_t MPU_xQueueGiveMutexRecursive( QueueHandle_t xMutex ) /* FREERTOS_SYSTEM_CALL */ 1475 { 1476 BaseType_t xReturn; 1477 1478 if( portIS_PRIVILEGED() == pdFALSE ) 1479 { 1480 portRAISE_PRIVILEGE(); 1481 portMEMORY_BARRIER(); 1482 1483 xReturn = xQueueGiveMutexRecursive( xMutex ); 1484 portMEMORY_BARRIER(); 1485 1486 portRESET_PRIVILEGE(); 1487 portMEMORY_BARRIER(); 1488 } 1489 else 1490 { 1491 xReturn = xQueueGiveMutexRecursive( xMutex ); 1492 } 1493 1494 return xReturn; 1495 } 1496 #endif /* if ( configUSE_RECURSIVE_MUTEXES == 1 ) */ 1497 /*-----------------------------------------------------------*/ 1498 1499 #if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) MPU_xQueueCreateSet(UBaseType_t uxEventQueueLength)1500 QueueSetHandle_t MPU_xQueueCreateSet( UBaseType_t uxEventQueueLength ) /* FREERTOS_SYSTEM_CALL */ 1501 { 1502 QueueSetHandle_t xReturn; 1503 1504 if( portIS_PRIVILEGED() == pdFALSE ) 1505 { 1506 portRAISE_PRIVILEGE(); 1507 portMEMORY_BARRIER(); 1508 1509 xReturn = xQueueCreateSet( uxEventQueueLength ); 1510 portMEMORY_BARRIER(); 1511 1512 portRESET_PRIVILEGE(); 1513 portMEMORY_BARRIER(); 1514 } 1515 else 1516 { 1517 xReturn = xQueueCreateSet( uxEventQueueLength ); 1518 } 1519 1520 return xReturn; 1521 } 1522 #endif /* if ( ( configUSE_QUEUE_SETS == 1 ) && ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) ) */ 1523 /*-----------------------------------------------------------*/ 1524 1525 #if ( configUSE_QUEUE_SETS == 1 ) MPU_xQueueSelectFromSet(QueueSetHandle_t xQueueSet,TickType_t xBlockTimeTicks)1526 QueueSetMemberHandle_t MPU_xQueueSelectFromSet( QueueSetHandle_t xQueueSet, 1527 TickType_t xBlockTimeTicks ) /* FREERTOS_SYSTEM_CALL */ 1528 { 1529 QueueSetMemberHandle_t xReturn; 1530 1531 if( portIS_PRIVILEGED() == pdFALSE ) 1532 { 1533 portRAISE_PRIVILEGE(); 1534 portMEMORY_BARRIER(); 1535 1536 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks ); 1537 portMEMORY_BARRIER(); 1538 1539 portRESET_PRIVILEGE(); 1540 portMEMORY_BARRIER(); 1541 } 1542 else 1543 { 1544 xReturn = xQueueSelectFromSet( xQueueSet, xBlockTimeTicks ); 1545 } 1546 1547 return xReturn; 1548 } 1549 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ 1550 /*-----------------------------------------------------------*/ 1551 1552 #if ( configUSE_QUEUE_SETS == 1 ) MPU_xQueueAddToSet(QueueSetMemberHandle_t xQueueOrSemaphore,QueueSetHandle_t xQueueSet)1553 BaseType_t MPU_xQueueAddToSet( QueueSetMemberHandle_t xQueueOrSemaphore, 1554 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */ 1555 { 1556 BaseType_t xReturn; 1557 1558 if( portIS_PRIVILEGED() == pdFALSE ) 1559 { 1560 portRAISE_PRIVILEGE(); 1561 portMEMORY_BARRIER(); 1562 1563 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet ); 1564 portMEMORY_BARRIER(); 1565 1566 portRESET_PRIVILEGE(); 1567 portMEMORY_BARRIER(); 1568 } 1569 else 1570 { 1571 xReturn = xQueueAddToSet( xQueueOrSemaphore, xQueueSet ); 1572 } 1573 1574 return xReturn; 1575 } 1576 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ 1577 /*-----------------------------------------------------------*/ 1578 1579 #if ( configUSE_QUEUE_SETS == 1 ) MPU_xQueueRemoveFromSet(QueueSetMemberHandle_t xQueueOrSemaphore,QueueSetHandle_t xQueueSet)1580 BaseType_t MPU_xQueueRemoveFromSet( QueueSetMemberHandle_t xQueueOrSemaphore, 1581 QueueSetHandle_t xQueueSet ) /* FREERTOS_SYSTEM_CALL */ 1582 { 1583 BaseType_t xReturn; 1584 1585 if( portIS_PRIVILEGED() == pdFALSE ) 1586 { 1587 portRAISE_PRIVILEGE(); 1588 portMEMORY_BARRIER(); 1589 1590 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet ); 1591 portMEMORY_BARRIER(); 1592 1593 portRESET_PRIVILEGE(); 1594 portMEMORY_BARRIER(); 1595 } 1596 else 1597 { 1598 xReturn = xQueueRemoveFromSet( xQueueOrSemaphore, xQueueSet ); 1599 } 1600 1601 return xReturn; 1602 } 1603 #endif /* if ( configUSE_QUEUE_SETS == 1 ) */ 1604 /*-----------------------------------------------------------*/ 1605 1606 #if configQUEUE_REGISTRY_SIZE > 0 MPU_vQueueAddToRegistry(QueueHandle_t xQueue,const char * pcName)1607 void MPU_vQueueAddToRegistry( QueueHandle_t xQueue, 1608 const char * pcName ) /* FREERTOS_SYSTEM_CALL */ 1609 { 1610 if( portIS_PRIVILEGED() == pdFALSE ) 1611 { 1612 portRAISE_PRIVILEGE(); 1613 portMEMORY_BARRIER(); 1614 1615 vQueueAddToRegistry( xQueue, pcName ); 1616 portMEMORY_BARRIER(); 1617 1618 portRESET_PRIVILEGE(); 1619 portMEMORY_BARRIER(); 1620 } 1621 else 1622 { 1623 vQueueAddToRegistry( xQueue, pcName ); 1624 } 1625 } 1626 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */ 1627 /*-----------------------------------------------------------*/ 1628 1629 #if configQUEUE_REGISTRY_SIZE > 0 MPU_vQueueUnregisterQueue(QueueHandle_t xQueue)1630 void MPU_vQueueUnregisterQueue( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ 1631 { 1632 if( portIS_PRIVILEGED() == pdFALSE ) 1633 { 1634 portRAISE_PRIVILEGE(); 1635 portMEMORY_BARRIER(); 1636 1637 vQueueUnregisterQueue( xQueue ); 1638 portMEMORY_BARRIER(); 1639 1640 portRESET_PRIVILEGE(); 1641 portMEMORY_BARRIER(); 1642 } 1643 else 1644 { 1645 vQueueUnregisterQueue( xQueue ); 1646 } 1647 } 1648 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */ 1649 /*-----------------------------------------------------------*/ 1650 1651 #if configQUEUE_REGISTRY_SIZE > 0 MPU_pcQueueGetName(QueueHandle_t xQueue)1652 const char * MPU_pcQueueGetName( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ 1653 { 1654 const char * pcReturn; 1655 1656 if( portIS_PRIVILEGED() == pdFALSE ) 1657 { 1658 portRAISE_PRIVILEGE(); 1659 portMEMORY_BARRIER(); 1660 1661 pcReturn = pcQueueGetName( xQueue ); 1662 portMEMORY_BARRIER(); 1663 1664 portRESET_PRIVILEGE(); 1665 portMEMORY_BARRIER(); 1666 } 1667 else 1668 { 1669 pcReturn = pcQueueGetName( xQueue ); 1670 } 1671 1672 return pcReturn; 1673 } 1674 #endif /* if configQUEUE_REGISTRY_SIZE > 0 */ 1675 /*-----------------------------------------------------------*/ 1676 MPU_vQueueDelete(QueueHandle_t xQueue)1677 void MPU_vQueueDelete( QueueHandle_t xQueue ) /* FREERTOS_SYSTEM_CALL */ 1678 { 1679 if( portIS_PRIVILEGED() == pdFALSE ) 1680 { 1681 portRAISE_PRIVILEGE(); 1682 portMEMORY_BARRIER(); 1683 1684 vQueueDelete( xQueue ); 1685 portMEMORY_BARRIER(); 1686 1687 portRESET_PRIVILEGE(); 1688 portMEMORY_BARRIER(); 1689 } 1690 else 1691 { 1692 vQueueDelete( xQueue ); 1693 } 1694 } 1695 /*-----------------------------------------------------------*/ 1696 1697 #if ( configUSE_TIMERS == 1 ) MPU_pvTimerGetTimerID(const TimerHandle_t xTimer)1698 void * MPU_pvTimerGetTimerID( const TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ 1699 { 1700 void * pvReturn; 1701 1702 if( portIS_PRIVILEGED() == pdFALSE ) 1703 { 1704 portRAISE_PRIVILEGE(); 1705 portMEMORY_BARRIER(); 1706 1707 pvReturn = pvTimerGetTimerID( xTimer ); 1708 portMEMORY_BARRIER(); 1709 1710 portRESET_PRIVILEGE(); 1711 portMEMORY_BARRIER(); 1712 } 1713 else 1714 { 1715 pvReturn = pvTimerGetTimerID( xTimer ); 1716 } 1717 1718 return pvReturn; 1719 } 1720 #endif /* if ( configUSE_TIMERS == 1 ) */ 1721 /*-----------------------------------------------------------*/ 1722 1723 #if ( configUSE_TIMERS == 1 ) MPU_vTimerSetTimerID(TimerHandle_t xTimer,void * pvNewID)1724 void MPU_vTimerSetTimerID( TimerHandle_t xTimer, 1725 void * pvNewID ) /* FREERTOS_SYSTEM_CALL */ 1726 { 1727 if( portIS_PRIVILEGED() == pdFALSE ) 1728 { 1729 portRAISE_PRIVILEGE(); 1730 portMEMORY_BARRIER(); 1731 1732 vTimerSetTimerID( xTimer, pvNewID ); 1733 portMEMORY_BARRIER(); 1734 1735 portRESET_PRIVILEGE(); 1736 portMEMORY_BARRIER(); 1737 } 1738 else 1739 { 1740 vTimerSetTimerID( xTimer, pvNewID ); 1741 } 1742 } 1743 #endif /* if ( configUSE_TIMERS == 1 ) */ 1744 /*-----------------------------------------------------------*/ 1745 1746 #if ( configUSE_TIMERS == 1 ) MPU_xTimerIsTimerActive(TimerHandle_t xTimer)1747 BaseType_t MPU_xTimerIsTimerActive( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ 1748 { 1749 BaseType_t xReturn; 1750 1751 if( portIS_PRIVILEGED() == pdFALSE ) 1752 { 1753 portRAISE_PRIVILEGE(); 1754 portMEMORY_BARRIER(); 1755 1756 xReturn = xTimerIsTimerActive( xTimer ); 1757 portMEMORY_BARRIER(); 1758 1759 portRESET_PRIVILEGE(); 1760 portMEMORY_BARRIER(); 1761 } 1762 else 1763 { 1764 xReturn = xTimerIsTimerActive( xTimer ); 1765 } 1766 1767 return xReturn; 1768 } 1769 #endif /* if ( configUSE_TIMERS == 1 ) */ 1770 /*-----------------------------------------------------------*/ 1771 1772 #if ( configUSE_TIMERS == 1 ) MPU_xTimerGetTimerDaemonTaskHandle(void)1773 TaskHandle_t MPU_xTimerGetTimerDaemonTaskHandle( void ) /* FREERTOS_SYSTEM_CALL */ 1774 { 1775 TaskHandle_t xReturn; 1776 1777 if( portIS_PRIVILEGED() == pdFALSE ) 1778 { 1779 portRAISE_PRIVILEGE(); 1780 portMEMORY_BARRIER(); 1781 1782 xReturn = xTimerGetTimerDaemonTaskHandle(); 1783 portMEMORY_BARRIER(); 1784 1785 portRESET_PRIVILEGE(); 1786 portMEMORY_BARRIER(); 1787 } 1788 else 1789 { 1790 xReturn = xTimerGetTimerDaemonTaskHandle(); 1791 } 1792 1793 return xReturn; 1794 } 1795 #endif /* if ( configUSE_TIMERS == 1 ) */ 1796 /*-----------------------------------------------------------*/ 1797 1798 #if ( configUSE_TIMERS == 1 ) MPU_vTimerSetReloadMode(TimerHandle_t xTimer,const BaseType_t uxAutoReload)1799 void MPU_vTimerSetReloadMode( TimerHandle_t xTimer, 1800 const BaseType_t uxAutoReload ) /* FREERTOS_SYSTEM_CALL */ 1801 { 1802 if( portIS_PRIVILEGED() == pdFALSE ) 1803 { 1804 portRAISE_PRIVILEGE(); 1805 portMEMORY_BARRIER(); 1806 1807 vTimerSetReloadMode( xTimer, uxAutoReload ); 1808 portMEMORY_BARRIER(); 1809 1810 portRESET_PRIVILEGE(); 1811 portMEMORY_BARRIER(); 1812 } 1813 else 1814 { 1815 vTimerSetReloadMode( xTimer, uxAutoReload ); 1816 } 1817 } 1818 #endif /* if ( configUSE_TIMERS == 1 ) */ 1819 /*-----------------------------------------------------------*/ 1820 1821 #if ( configUSE_TIMERS == 1 ) MPU_uxTimerGetReloadMode(TimerHandle_t xTimer)1822 UBaseType_t MPU_uxTimerGetReloadMode( TimerHandle_t xTimer ) 1823 { 1824 UBaseType_t uxReturn; 1825 1826 if( portIS_PRIVILEGED() == pdFALSE ) 1827 { 1828 portRAISE_PRIVILEGE(); 1829 portMEMORY_BARRIER(); 1830 1831 uxReturn = uxTimerGetReloadMode( xTimer ); 1832 portMEMORY_BARRIER(); 1833 1834 portRESET_PRIVILEGE(); 1835 portMEMORY_BARRIER(); 1836 } 1837 else 1838 { 1839 uxReturn = uxTimerGetReloadMode( xTimer ); 1840 } 1841 1842 return uxReturn; 1843 } 1844 #endif /* if ( configUSE_TIMERS == 1 ) */ 1845 /*-----------------------------------------------------------*/ 1846 1847 #if ( configUSE_TIMERS == 1 ) MPU_pcTimerGetName(TimerHandle_t xTimer)1848 const char * MPU_pcTimerGetName( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ 1849 { 1850 const char * pcReturn; 1851 1852 if( portIS_PRIVILEGED() == pdFALSE ) 1853 { 1854 portRAISE_PRIVILEGE(); 1855 portMEMORY_BARRIER(); 1856 1857 pcReturn = pcTimerGetName( xTimer ); 1858 portMEMORY_BARRIER(); 1859 1860 portRESET_PRIVILEGE(); 1861 portMEMORY_BARRIER(); 1862 } 1863 else 1864 { 1865 pcReturn = pcTimerGetName( xTimer ); 1866 } 1867 1868 return pcReturn; 1869 } 1870 #endif /* if ( configUSE_TIMERS == 1 ) */ 1871 /*-----------------------------------------------------------*/ 1872 1873 #if ( configUSE_TIMERS == 1 ) MPU_xTimerGetPeriod(TimerHandle_t xTimer)1874 TickType_t MPU_xTimerGetPeriod( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ 1875 { 1876 TickType_t xReturn; 1877 1878 if( portIS_PRIVILEGED() == pdFALSE ) 1879 { 1880 portRAISE_PRIVILEGE(); 1881 portMEMORY_BARRIER(); 1882 1883 xReturn = xTimerGetPeriod( xTimer ); 1884 portMEMORY_BARRIER(); 1885 1886 portRESET_PRIVILEGE(); 1887 portMEMORY_BARRIER(); 1888 } 1889 else 1890 { 1891 xReturn = xTimerGetPeriod( xTimer ); 1892 } 1893 1894 return xReturn; 1895 } 1896 #endif /* if ( configUSE_TIMERS == 1 ) */ 1897 /*-----------------------------------------------------------*/ 1898 1899 #if ( configUSE_TIMERS == 1 ) MPU_xTimerGetExpiryTime(TimerHandle_t xTimer)1900 TickType_t MPU_xTimerGetExpiryTime( TimerHandle_t xTimer ) /* FREERTOS_SYSTEM_CALL */ 1901 { 1902 TickType_t xReturn; 1903 1904 if( portIS_PRIVILEGED() == pdFALSE ) 1905 { 1906 portRAISE_PRIVILEGE(); 1907 portMEMORY_BARRIER(); 1908 1909 xReturn = xTimerGetExpiryTime( xTimer ); 1910 portMEMORY_BARRIER(); 1911 1912 portRESET_PRIVILEGE(); 1913 portMEMORY_BARRIER(); 1914 } 1915 else 1916 { 1917 xReturn = xTimerGetExpiryTime( xTimer ); 1918 } 1919 1920 return xReturn; 1921 } 1922 #endif /* if ( configUSE_TIMERS == 1 ) */ 1923 /*-----------------------------------------------------------*/ 1924 1925 #if ( configUSE_TIMERS == 1 ) MPU_xTimerGenericCommandFromTask(TimerHandle_t xTimer,const BaseType_t xCommandID,const TickType_t xOptionalValue,BaseType_t * const pxHigherPriorityTaskWoken,const TickType_t xTicksToWait)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 */ 1931 { 1932 BaseType_t xReturn; 1933 1934 if( portIS_PRIVILEGED() == pdFALSE ) 1935 { 1936 portRAISE_PRIVILEGE(); 1937 portMEMORY_BARRIER(); 1938 1939 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait ); 1940 portMEMORY_BARRIER(); 1941 1942 portRESET_PRIVILEGE(); 1943 portMEMORY_BARRIER(); 1944 } 1945 else 1946 { 1947 xReturn = xTimerGenericCommandFromTask( xTimer, xCommandID, xOptionalValue, pxHigherPriorityTaskWoken, xTicksToWait ); 1948 } 1949 1950 return xReturn; 1951 } 1952 #endif /* if ( configUSE_TIMERS == 1 ) */ 1953 /*-----------------------------------------------------------*/ 1954 1955 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) MPU_xEventGroupCreate(void)1956 EventGroupHandle_t MPU_xEventGroupCreate( void ) /* FREERTOS_SYSTEM_CALL */ 1957 { 1958 EventGroupHandle_t xReturn; 1959 1960 if( portIS_PRIVILEGED() == pdFALSE ) 1961 { 1962 portRAISE_PRIVILEGE(); 1963 portMEMORY_BARRIER(); 1964 1965 xReturn = xEventGroupCreate(); 1966 portMEMORY_BARRIER(); 1967 1968 portRESET_PRIVILEGE(); 1969 portMEMORY_BARRIER(); 1970 } 1971 else 1972 { 1973 xReturn = xEventGroupCreate(); 1974 } 1975 1976 return xReturn; 1977 } 1978 #endif /* if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) */ 1979 /*-----------------------------------------------------------*/ 1980 1981 #if ( configSUPPORT_STATIC_ALLOCATION == 1 ) MPU_xEventGroupCreateStatic(StaticEventGroup_t * pxEventGroupBuffer)1982 EventGroupHandle_t MPU_xEventGroupCreateStatic( StaticEventGroup_t * pxEventGroupBuffer ) /* FREERTOS_SYSTEM_CALL */ 1983 { 1984 EventGroupHandle_t xReturn; 1985 1986 if( portIS_PRIVILEGED() == pdFALSE ) 1987 { 1988 portRAISE_PRIVILEGE(); 1989 portMEMORY_BARRIER(); 1990 1991 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer ); 1992 portMEMORY_BARRIER(); 1993 1994 portRESET_PRIVILEGE(); 1995 portMEMORY_BARRIER(); 1996 } 1997 else 1998 { 1999 xReturn = xEventGroupCreateStatic( pxEventGroupBuffer ); 2000 } 2001 2002 return xReturn; 2003 } 2004 #endif /* if ( configSUPPORT_STATIC_ALLOCATION == 1 ) */ 2005 /*-----------------------------------------------------------*/ 2006 MPU_xEventGroupWaitBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToWaitFor,const BaseType_t xClearOnExit,const BaseType_t xWaitForAllBits,TickType_t xTicksToWait)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 */ 2012 { 2013 EventBits_t xReturn; 2014 2015 if( portIS_PRIVILEGED() == pdFALSE ) 2016 { 2017 portRAISE_PRIVILEGE(); 2018 portMEMORY_BARRIER(); 2019 2020 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait ); 2021 portMEMORY_BARRIER(); 2022 2023 portRESET_PRIVILEGE(); 2024 portMEMORY_BARRIER(); 2025 } 2026 else 2027 { 2028 xReturn = xEventGroupWaitBits( xEventGroup, uxBitsToWaitFor, xClearOnExit, xWaitForAllBits, xTicksToWait ); 2029 } 2030 2031 return xReturn; 2032 } 2033 /*-----------------------------------------------------------*/ 2034 MPU_xEventGroupClearBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToClear)2035 EventBits_t MPU_xEventGroupClearBits( EventGroupHandle_t xEventGroup, 2036 const EventBits_t uxBitsToClear ) /* FREERTOS_SYSTEM_CALL */ 2037 { 2038 EventBits_t xReturn; 2039 2040 if( portIS_PRIVILEGED() == pdFALSE ) 2041 { 2042 portRAISE_PRIVILEGE(); 2043 portMEMORY_BARRIER(); 2044 2045 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear ); 2046 portMEMORY_BARRIER(); 2047 2048 portRESET_PRIVILEGE(); 2049 portMEMORY_BARRIER(); 2050 } 2051 else 2052 { 2053 xReturn = xEventGroupClearBits( xEventGroup, uxBitsToClear ); 2054 } 2055 2056 return xReturn; 2057 } 2058 /*-----------------------------------------------------------*/ 2059 MPU_xEventGroupSetBits(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet)2060 EventBits_t MPU_xEventGroupSetBits( EventGroupHandle_t xEventGroup, 2061 const EventBits_t uxBitsToSet ) /* FREERTOS_SYSTEM_CALL */ 2062 { 2063 EventBits_t xReturn; 2064 2065 if( portIS_PRIVILEGED() == pdFALSE ) 2066 { 2067 portRAISE_PRIVILEGE(); 2068 portMEMORY_BARRIER(); 2069 2070 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet ); 2071 portMEMORY_BARRIER(); 2072 2073 portRESET_PRIVILEGE(); 2074 portMEMORY_BARRIER(); 2075 } 2076 else 2077 { 2078 xReturn = xEventGroupSetBits( xEventGroup, uxBitsToSet ); 2079 } 2080 2081 return xReturn; 2082 } 2083 /*-----------------------------------------------------------*/ 2084 MPU_xEventGroupSync(EventGroupHandle_t xEventGroup,const EventBits_t uxBitsToSet,const EventBits_t uxBitsToWaitFor,TickType_t xTicksToWait)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 */ 2089 { 2090 EventBits_t xReturn; 2091 2092 if( portIS_PRIVILEGED() == pdFALSE ) 2093 { 2094 portRAISE_PRIVILEGE(); 2095 portMEMORY_BARRIER(); 2096 2097 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait ); 2098 portMEMORY_BARRIER(); 2099 2100 portRESET_PRIVILEGE(); 2101 portMEMORY_BARRIER(); 2102 } 2103 else 2104 { 2105 xReturn = xEventGroupSync( xEventGroup, uxBitsToSet, uxBitsToWaitFor, xTicksToWait ); 2106 } 2107 2108 return xReturn; 2109 } 2110 /*-----------------------------------------------------------*/ 2111 MPU_vEventGroupDelete(EventGroupHandle_t xEventGroup)2112 void MPU_vEventGroupDelete( EventGroupHandle_t xEventGroup ) /* FREERTOS_SYSTEM_CALL */ 2113 { 2114 if( portIS_PRIVILEGED() == pdFALSE ) 2115 { 2116 portRAISE_PRIVILEGE(); 2117 portMEMORY_BARRIER(); 2118 2119 vEventGroupDelete( xEventGroup ); 2120 portMEMORY_BARRIER(); 2121 2122 portRESET_PRIVILEGE(); 2123 portMEMORY_BARRIER(); 2124 } 2125 else 2126 { 2127 vEventGroupDelete( xEventGroup ); 2128 } 2129 } 2130 /*-----------------------------------------------------------*/ 2131 MPU_xStreamBufferSend(StreamBufferHandle_t xStreamBuffer,const void * pvTxData,size_t xDataLengthBytes,TickType_t xTicksToWait)2132 size_t MPU_xStreamBufferSend( StreamBufferHandle_t xStreamBuffer, 2133 const void * pvTxData, 2134 size_t xDataLengthBytes, 2135 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 2136 { 2137 size_t xReturn; 2138 2139 if( portIS_PRIVILEGED() == pdFALSE ) 2140 { 2141 portRAISE_PRIVILEGE(); 2142 portMEMORY_BARRIER(); 2143 2144 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait ); 2145 portMEMORY_BARRIER(); 2146 2147 portRESET_PRIVILEGE(); 2148 portMEMORY_BARRIER(); 2149 } 2150 else 2151 { 2152 xReturn = xStreamBufferSend( xStreamBuffer, pvTxData, xDataLengthBytes, xTicksToWait ); 2153 } 2154 2155 return xReturn; 2156 } 2157 /*-----------------------------------------------------------*/ 2158 MPU_xStreamBufferNextMessageLengthBytes(StreamBufferHandle_t xStreamBuffer)2159 size_t MPU_xStreamBufferNextMessageLengthBytes( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2160 { 2161 size_t xReturn; 2162 2163 if( portIS_PRIVILEGED() == pdFALSE ) 2164 { 2165 portRAISE_PRIVILEGE(); 2166 portMEMORY_BARRIER(); 2167 2168 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer ); 2169 portMEMORY_BARRIER(); 2170 2171 portRESET_PRIVILEGE(); 2172 portMEMORY_BARRIER(); 2173 } 2174 else 2175 { 2176 xReturn = xStreamBufferNextMessageLengthBytes( xStreamBuffer ); 2177 } 2178 2179 return xReturn; 2180 } 2181 /*-----------------------------------------------------------*/ 2182 MPU_xStreamBufferReceive(StreamBufferHandle_t xStreamBuffer,void * pvRxData,size_t xBufferLengthBytes,TickType_t xTicksToWait)2183 size_t MPU_xStreamBufferReceive( StreamBufferHandle_t xStreamBuffer, 2184 void * pvRxData, 2185 size_t xBufferLengthBytes, 2186 TickType_t xTicksToWait ) /* FREERTOS_SYSTEM_CALL */ 2187 { 2188 size_t xReturn; 2189 2190 if( portIS_PRIVILEGED() == pdFALSE ) 2191 { 2192 portRAISE_PRIVILEGE(); 2193 portMEMORY_BARRIER(); 2194 2195 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ); 2196 portMEMORY_BARRIER(); 2197 2198 portRESET_PRIVILEGE(); 2199 portMEMORY_BARRIER(); 2200 } 2201 else 2202 { 2203 xReturn = xStreamBufferReceive( xStreamBuffer, pvRxData, xBufferLengthBytes, xTicksToWait ); 2204 } 2205 2206 return xReturn; 2207 } 2208 /*-----------------------------------------------------------*/ 2209 MPU_vStreamBufferDelete(StreamBufferHandle_t xStreamBuffer)2210 void MPU_vStreamBufferDelete( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2211 { 2212 if( portIS_PRIVILEGED() == pdFALSE ) 2213 { 2214 portRAISE_PRIVILEGE(); 2215 portMEMORY_BARRIER(); 2216 2217 vStreamBufferDelete( xStreamBuffer ); 2218 portMEMORY_BARRIER(); 2219 2220 portRESET_PRIVILEGE(); 2221 portMEMORY_BARRIER(); 2222 } 2223 else 2224 { 2225 vStreamBufferDelete( xStreamBuffer ); 2226 } 2227 } 2228 /*-----------------------------------------------------------*/ 2229 MPU_xStreamBufferIsFull(StreamBufferHandle_t xStreamBuffer)2230 BaseType_t MPU_xStreamBufferIsFull( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2231 { 2232 BaseType_t xReturn; 2233 2234 if( portIS_PRIVILEGED() == pdFALSE ) 2235 { 2236 portRAISE_PRIVILEGE(); 2237 portMEMORY_BARRIER(); 2238 2239 xReturn = xStreamBufferIsFull( xStreamBuffer ); 2240 portMEMORY_BARRIER(); 2241 2242 portRESET_PRIVILEGE(); 2243 portMEMORY_BARRIER(); 2244 } 2245 else 2246 { 2247 xReturn = xStreamBufferIsFull( xStreamBuffer ); 2248 } 2249 2250 return xReturn; 2251 } 2252 /*-----------------------------------------------------------*/ 2253 MPU_xStreamBufferIsEmpty(StreamBufferHandle_t xStreamBuffer)2254 BaseType_t MPU_xStreamBufferIsEmpty( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2255 { 2256 BaseType_t xReturn; 2257 2258 if( portIS_PRIVILEGED() == pdFALSE ) 2259 { 2260 portRAISE_PRIVILEGE(); 2261 portMEMORY_BARRIER(); 2262 2263 xReturn = xStreamBufferIsEmpty( xStreamBuffer ); 2264 portMEMORY_BARRIER(); 2265 2266 portRESET_PRIVILEGE(); 2267 portMEMORY_BARRIER(); 2268 } 2269 else 2270 { 2271 xReturn = xStreamBufferIsEmpty( xStreamBuffer ); 2272 } 2273 2274 return xReturn; 2275 } 2276 /*-----------------------------------------------------------*/ 2277 MPU_xStreamBufferReset(StreamBufferHandle_t xStreamBuffer)2278 BaseType_t MPU_xStreamBufferReset( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2279 { 2280 BaseType_t xReturn; 2281 2282 if( portIS_PRIVILEGED() == pdFALSE ) 2283 { 2284 portRAISE_PRIVILEGE(); 2285 portMEMORY_BARRIER(); 2286 2287 xReturn = xStreamBufferReset( xStreamBuffer ); 2288 portMEMORY_BARRIER(); 2289 2290 portRESET_PRIVILEGE(); 2291 portMEMORY_BARRIER(); 2292 } 2293 else 2294 { 2295 xReturn = xStreamBufferReset( xStreamBuffer ); 2296 } 2297 2298 return xReturn; 2299 } 2300 /*-----------------------------------------------------------*/ 2301 MPU_xStreamBufferSpacesAvailable(StreamBufferHandle_t xStreamBuffer)2302 size_t MPU_xStreamBufferSpacesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2303 { 2304 size_t xReturn; 2305 2306 if( portIS_PRIVILEGED() == pdFALSE ) 2307 { 2308 portRAISE_PRIVILEGE(); 2309 portMEMORY_BARRIER(); 2310 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer ); 2311 portMEMORY_BARRIER(); 2312 2313 portRESET_PRIVILEGE(); 2314 portMEMORY_BARRIER(); 2315 } 2316 else 2317 { 2318 xReturn = xStreamBufferSpacesAvailable( xStreamBuffer ); 2319 } 2320 2321 return xReturn; 2322 } 2323 /*-----------------------------------------------------------*/ 2324 MPU_xStreamBufferBytesAvailable(StreamBufferHandle_t xStreamBuffer)2325 size_t MPU_xStreamBufferBytesAvailable( StreamBufferHandle_t xStreamBuffer ) /* FREERTOS_SYSTEM_CALL */ 2326 { 2327 size_t xReturn; 2328 2329 if( portIS_PRIVILEGED() == pdFALSE ) 2330 { 2331 portRAISE_PRIVILEGE(); 2332 portMEMORY_BARRIER(); 2333 2334 xReturn = xStreamBufferBytesAvailable( xStreamBuffer ); 2335 portMEMORY_BARRIER(); 2336 2337 portRESET_PRIVILEGE(); 2338 portMEMORY_BARRIER(); 2339 } 2340 else 2341 { 2342 xReturn = xStreamBufferBytesAvailable( xStreamBuffer ); 2343 } 2344 2345 return xReturn; 2346 } 2347 /*-----------------------------------------------------------*/ 2348 MPU_xStreamBufferSetTriggerLevel(StreamBufferHandle_t xStreamBuffer,size_t xTriggerLevel)2349 BaseType_t MPU_xStreamBufferSetTriggerLevel( StreamBufferHandle_t xStreamBuffer, 2350 size_t xTriggerLevel ) /* FREERTOS_SYSTEM_CALL */ 2351 { 2352 BaseType_t xReturn; 2353 2354 if( portIS_PRIVILEGED() == pdFALSE ) 2355 { 2356 portRAISE_PRIVILEGE(); 2357 portMEMORY_BARRIER(); 2358 2359 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel ); 2360 portMEMORY_BARRIER(); 2361 2362 portRESET_PRIVILEGE(); 2363 portMEMORY_BARRIER(); 2364 } 2365 else 2366 { 2367 xReturn = xStreamBufferSetTriggerLevel( xStreamBuffer, xTriggerLevel ); 2368 } 2369 2370 return xReturn; 2371 } 2372 /*-----------------------------------------------------------*/ 2373 2374 #if ( configSUPPORT_DYNAMIC_ALLOCATION == 1 ) MPU_xStreamBufferGenericCreate(size_t xBufferSizeBytes,size_t xTriggerLevelBytes,BaseType_t xIsMessageBuffer,StreamBufferCallbackFunction_t pxSendCompletedCallback,StreamBufferCallbackFunction_t pxReceiveCompletedCallback)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 */ 2380 { 2381 StreamBufferHandle_t xReturn; 2382 2383 /** 2384 * Streambuffer application level callback functionality is disabled for MPU 2385 * enabled ports. 2386 */ 2387 configASSERT( ( pxSendCompletedCallback == NULL ) && 2388 ( pxReceiveCompletedCallback == NULL ) ); 2389 2390 if( ( pxSendCompletedCallback == NULL ) && 2391 ( pxReceiveCompletedCallback == NULL ) ) 2392 { 2393 if( portIS_PRIVILEGED() == pdFALSE ) 2394 { 2395 portRAISE_PRIVILEGE(); 2396 portMEMORY_BARRIER(); 2397 2398 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes, 2399 xTriggerLevelBytes, 2400 xIsMessageBuffer, 2401 NULL, 2402 NULL ); 2403 portMEMORY_BARRIER(); 2404 2405 portRESET_PRIVILEGE(); 2406 portMEMORY_BARRIER(); 2407 } 2408 else 2409 { 2410 xReturn = xStreamBufferGenericCreate( xBufferSizeBytes, 2411 xTriggerLevelBytes, 2412 xIsMessageBuffer, 2413 NULL, 2414 NULL ); 2415 } 2416 } 2417 else 2418 { 2419 traceSTREAM_BUFFER_CREATE_FAILED( xIsMessageBuffer ); 2420 xReturn = NULL; 2421 } 2422 2423 return xReturn; 2424 } 2425 #endif /* configSUPPORT_DYNAMIC_ALLOCATION */ 2426 /*-----------------------------------------------------------*/ 2427 2428 #if ( configSUPPORT_STATIC_ALLOCATION == 1 ) MPU_xStreamBufferGenericCreateStatic(size_t xBufferSizeBytes,size_t xTriggerLevelBytes,BaseType_t xIsMessageBuffer,uint8_t * const pucStreamBufferStorageArea,StaticStreamBuffer_t * const pxStaticStreamBuffer,StreamBufferCallbackFunction_t pxSendCompletedCallback,StreamBufferCallbackFunction_t pxReceiveCompletedCallback)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 */ 2436 { 2437 StreamBufferHandle_t xReturn; 2438 2439 /** 2440 * Streambuffer application level callback functionality is disabled for MPU 2441 * enabled ports. 2442 */ 2443 configASSERT( ( pxSendCompletedCallback == NULL ) && 2444 ( pxReceiveCompletedCallback == NULL ) ); 2445 2446 if( ( pxSendCompletedCallback == NULL ) && 2447 ( pxReceiveCompletedCallback == NULL ) ) 2448 { 2449 if( portIS_PRIVILEGED() == pdFALSE ) 2450 { 2451 portRAISE_PRIVILEGE(); 2452 portMEMORY_BARRIER(); 2453 2454 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes, 2455 xTriggerLevelBytes, 2456 xIsMessageBuffer, 2457 pucStreamBufferStorageArea, 2458 pxStaticStreamBuffer, 2459 NULL, 2460 NULL ); 2461 portMEMORY_BARRIER(); 2462 2463 portRESET_PRIVILEGE(); 2464 portMEMORY_BARRIER(); 2465 } 2466 else 2467 { 2468 xReturn = xStreamBufferGenericCreateStatic( xBufferSizeBytes, 2469 xTriggerLevelBytes, 2470 xIsMessageBuffer, 2471 pucStreamBufferStorageArea, 2472 pxStaticStreamBuffer, 2473 NULL, 2474 NULL ); 2475 } 2476 } 2477 else 2478 { 2479 traceSTREAM_BUFFER_CREATE_STATIC_FAILED( xReturn, xIsMessageBuffer ); 2480 xReturn = NULL; 2481 } 2482 2483 return xReturn; 2484 } 2485 #endif /* configSUPPORT_STATIC_ALLOCATION */ 2486 /*-----------------------------------------------------------*/ 2487 2488 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: 2493 * 2494 * void MPU_FunctionName( [parameters ] ) FREERTOS_SYSTEM_CALL; 2495 * void MPU_FunctionName( [parameters ] ) 2496 * { 2497 * if( portIS_PRIVILEGED() == pdFALSE ) 2498 * { 2499 * portRAISE_PRIVILEGE(); 2500 * portMEMORY_BARRIER(); 2501 * 2502 * FunctionName( [parameters ] ); 2503 * portMEMORY_BARRIER(); 2504 * 2505 * portRESET_PRIVILEGE(); 2506 * portMEMORY_BARRIER(); 2507 * } 2508 * else 2509 * { 2510 * FunctionName( [parameters ] ); 2511 * } 2512 * } 2513 */ 2514 2515 #if configINCLUDE_APPLICATION_DEFINED_PRIVILEGED_FUNCTIONS == 1 2516 #include "application_defined_privileged_functions.h" 2517 #endif 2518 /*-----------------------------------------------------------*/ 2519 2520 #endif /* #if ( ( portUSING_MPU_WRAPPERS == 1 ) && ( configUSE_MPU_WRAPPERS_V1 == 1 ) ) */ 2521 /*-----------------------------------------------------------*/ 2522