diff --git a/.github/scripts/kernel_checker.py b/.github/scripts/kernel_checker.py index 0519f1c82ae..9f23a79d8b1 100755 --- a/.github/scripts/kernel_checker.py +++ b/.github/scripts/kernel_checker.py @@ -93,7 +93,8 @@ r'.*portable/ThirdParty/xClang/XCOREAI/*', r'.*IAR/ARM_C*', r'.*IAR/78K0R/*', - r'.*CCS/MSP430X/*' + r'.*CCS/MSP430X/*', + r'.*portable/template/*' ] KERNEL_THIRD_PARTY_PATTERNS = [ diff --git a/portable/template/port.c b/portable/template/port.c index 4702da1010e..84706a9ea88 100644 --- a/portable/template/port.c +++ b/portable/template/port.c @@ -1,54 +1,24 @@ -/* TODO: Replace the copyright and license with YOUR copyright and license */ - -/* - * FreeRTOS Kernel - * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. - * - * SPDX-License-Identifier: MIT - * - * Permission is hereby granted, free of charge, to any person obtaining a copy of - * this software and associated documentation files (the "Software"), to deal in - * the Software without restriction, including without limitation the rights to - * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of - * the Software, and to permit persons to whom the Software is furnished to do so, - * subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS - * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR - * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER - * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN - * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - * - * https://www.FreeRTOS.org - * https://github.com/FreeRTOS - * - */ #include "FreeRTOS.h" #include "task.h" -BaseType_t xPortStartScheduler( void ) +BaseType_t xPortStartScheduler(void) { return pdTRUE; } -void vPortEndScheduler( void ) +void vPortEndScheduler(void) { } -StackType_t * pxPortInitialiseStack( StackType_t * pxTopOfStack, - TaskFunction_t pxCode, - void * pvParameters ) +StackType_t *pxPortInitialiseStack(StackType_t *pxTopOfStack, + TaskFunction_t pxCode, + void *pvParameters) { return NULL; } - -void vPortYield( void ) +void vPortYield(void) { /* Save the current Context */ /* Switch to the highest priority task that is ready to run. */ @@ -56,13 +26,13 @@ void vPortYield( void ) /* Start executing the task we have just switched to. */ } -static void prvTickISR( void ) +static void prvTickISR(void) { /* Interrupts must have been enabled for the ISR to fire, so we have to * save the context with interrupts enabled. */ /* Maintain the tick count. */ - if( xTaskIncrementTick() != pdFALSE ) + if (xTaskIncrementTick() != pdFALSE) { /* Switch to the highest priority task that is ready to run. */ vTaskSwitchContext(); diff --git a/portable/template/portmacro.h b/portable/template/portmacro.h index 9c738ac12fe..642dbf0aea1 100644 --- a/portable/template/portmacro.h +++ b/portable/template/portmacro.h @@ -1,3 +1,31 @@ +/* + * FreeRTOS Kernel + * Copyright (C) 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * SPDX-License-Identifier: MIT + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + * the Software, and to permit persons to whom the Software is furnished to do so, + * subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * + * https://www.FreeRTOS.org + * https://github.com/FreeRTOS + * + */ + #ifndef PORTMACRO_H #define PORTMACRO_H @@ -12,66 +40,76 @@ */ /* Type definitions. */ -#define portCHAR char -#define portFLOAT float -#define portDOUBLE double -#define portLONG long -#define portSHORT int -#define portSTACK_TYPE uint8_t -#define portBASE_TYPE char - -#define portSTACK_GROWTH ( -1 ) -#define portBYTE_ALIGNMENT 4 -#define portPOINTER_SIZE_TYPE size_t -typedef portSTACK_TYPE StackType_t; -typedef signed char BaseType_t; -typedef unsigned char UBaseType_t; - -#if ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS ) - typedef uint16_t TickType_t; - #define portMAX_DELAY ( TickType_t ) 0xffff -#elif ( configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS ) - typedef uint32_t TickType_t; - #define portMAX_DELAY ( TickType_t ) 0xffffffffUL +#define portCHAR char +#define portFLOAT float +#define portDOUBLE double +#define portLONG long +#define portSHORT int +#define portSTACK_TYPE uint8_t +#define portBASE_TYPE char + +#define portSTACK_GROWTH (-1) +#define portBYTE_ALIGNMENT 4 +#define portPOINTER_SIZE_TYPE size_t +typedef portSTACK_TYPE StackType_t; +typedef signed char BaseType_t; +typedef unsigned char UBaseType_t; + +#if (configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_16_BITS) +typedef uint16_t TickType_t; +#define portMAX_DELAY (TickType_t)0xffff +#elif (configTICK_TYPE_WIDTH_IN_BITS == TICK_TYPE_WIDTH_32_BITS) +typedef uint32_t TickType_t; +#define portMAX_DELAY (TickType_t)0xffffffffUL #else - #error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width. +#error configTICK_TYPE_WIDTH_IN_BITS set to unsupported tick type width. #endif /* Architecture specific optimisations. */ #ifndef configUSE_PORT_OPTIMISED_TASK_SELECTION - #define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 +#define configUSE_PORT_OPTIMISED_TASK_SELECTION 1 #endif #if configUSE_PORT_OPTIMISED_TASK_SELECTION == 1 /* Check the configuration. */ - #if ( configMAX_PRIORITIES > 32 ) - #error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice. - #endif +#if (configMAX_PRIORITIES > 32) +#error configUSE_PORT_OPTIMISED_TASK_SELECTION can only be set to 1 when configMAX_PRIORITIES is less than or equal to 32. It is very rare that a system requires more than 10 to 15 difference priorities as tasks that share a priority will time slice. +#endif /* Store/clear the ready priorities in a bit map. */ - #define portRECORD_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) |= ( 1UL << ( uxPriority ) ) - #define portRESET_READY_PRIORITY( uxPriority, uxReadyPriorities ) ( uxReadyPriorities ) &= ~( 1UL << ( uxPriority ) ) +#define portRECORD_READY_PRIORITY(uxPriority, uxReadyPriorities) (uxReadyPriorities) |= (1UL << (uxPriority)) +#define portRESET_READY_PRIORITY(uxPriority, uxReadyPriorities) (uxReadyPriorities) &= ~(1UL << (uxPriority)) /*-----------------------------------------------------------*/ - #define portGET_HIGHEST_PRIORITY( uxTopPriority, uxReadyPriorities ) \ - { uxTopPriority = 0; } \ - while( 0 ) +#define portGET_HIGHEST_PRIORITY(uxTopPriority, uxReadyPriorities) \ + { \ + uxTopPriority = 0; \ + } \ + while (0) #endif /* configUSE_PORT_OPTIMISED_TASK_SELECTION */ -#define portDISABLE_INTERRUPTS() { /* Disable the interrupts */ } -#define portENABLE_INTERRUPTS() { /* Enable the interrupts */ } +#define portDISABLE_INTERRUPTS() \ + { /* Disable the interrupts */ \ + } +#define portENABLE_INTERRUPTS() \ + { /* Enable the interrupts */ \ + } -#define portENTER_CRITICAL() { /* preserve current interrupt state and then disable interrupts */ } -#define portEXIT_CRITICAL() { /* restore previously preserved interrupt state */ } +#define portENTER_CRITICAL() \ + { /* preserve current interrupt state and then disable interrupts */ \ + } +#define portEXIT_CRITICAL() \ + { /* restore previously preserved interrupt state */ \ + } -extern void vPortYield( void ); -#define portYIELD() vPortYield() +extern void vPortYield(void); +#define portYIELD() vPortYield() /* Task function macros as described on the FreeRTOS.org WEB site. */ -#define portTASK_FUNCTION_PROTO( vFunction, pvParameters ) void vFunction( void * pvParameters ) -#define portTASK_FUNCTION( vFunction, pvParameters ) void vFunction( void * pvParameters ) +#define portTASK_FUNCTION_PROTO(vFunction, pvParameters) void vFunction(void *pvParameters) +#define portTASK_FUNCTION(vFunction, pvParameters) void vFunction(void *pvParameters) #endif /* PORTMACRO_H */