diff --git a/MISRA.md b/MISRA.md index 9c834010a..8acb36866 100644 --- a/MISRA.md +++ b/MISRA.md @@ -52,9 +52,6 @@ _Ref 8.6.1_ - This rule prohibits an identifier with external linkage to have multiple definitions or no definition. FreeRTOS hook functions are implemented in the application and therefore, have no definition in the Kernel code. - - Port layer function declarations are provided without corresponding - implementations to provide for ease of porting to a device. These definitions - cannot be implemented until a port is selected. #### Rule 11.1 MISRA C:2012 Rule 11.1: Conversions shall not be performed between a pointer to @@ -150,10 +147,20 @@ _Ref 21.6.1_ ### Unsupressed Deviations -Certain deviating code is left unsurpressed for awarness. This code should -not be considered for usage in MISRA compliant applications. These violations +Certain deviating code is left unsurpressed for awarness. These violations will be reported when audited by a MISRA-checking static analysis tool. +Some of these unsuppressed exceptions correspond to example code provided +either for demonstration or verification of the FreeRTOS kernel. This code +is not considered part of the kernel implemenation and should not be used +in an application. + +Other unsupressed violations are left present in the kernel implementation +as implementations, code, or other missing functionality being flagged for +violations will be present with the porting layer provided by the +application. The presence of these errors after providing a port indicates +a valid MISRA issue. + #### Rule 2.1 MISRA C:2012 Dir 2.1: A project shall not contain unreachable code @@ -190,6 +197,17 @@ _Ref 4.12_ Affected Files: - portable/MemMang/heap_*.c + +#### Rule 8.6 + +MISRA C:2012 Rule 8.6: An identifier with external linkage shall have exactly +one external definition. + +_Ref 8.6.1_ + - Port layer function declarations are provided without corresponding + implementations to provide for ease of porting to a device. These definitions + cannot be implemented until a port is selected. + #### Rule 21.3 MISRA C-2012 Rule 21.3: The memory allocation and deallocation functions of diff --git a/include/portable.h b/include/portable.h index 477eebb84..9050a851d 100644 --- a/include/portable.h +++ b/include/portable.h @@ -180,39 +180,18 @@ typedef struct xHeapStats /* coverity[misra_c_2012_rule_8_6_violation] */ void vPortDefineHeapRegions( const HeapRegion_t * const pxHeapRegions ) PRIVILEGED_FUNCTION; +/* + * Returns a HeapStats_t structure filled with information about the current + * heap state. + */ +void vPortGetHeapStats( HeapStats_t * pxHeapStats ); + /* * Map to the memory management routines required for the port. */ -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ void * pvPortMalloc( size_t xWantedSize ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ void * pvPortCalloc( size_t xNum, size_t xSize ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ -void vPortFree( void * pv ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ -void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ -size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ -size_t xPortGetMinimumEverFreeHeapSize( void ) PRIVILEGED_FUNCTION; -/* MISRA Ref 8.6.1 [External linkage] */ -/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-86 */ -/* coverity[misra_c_2012_rule_8_6_violation] */ -void xPortResetHeapMinimumEverFreeHeapSize( void ) PRIVILEGED_FUNCTION; - size_t xSize ) PRIVILEGED_FUNCTION; void vPortFree( void * pv ) PRIVILEGED_FUNCTION; void vPortInitialiseBlocks( void ) PRIVILEGED_FUNCTION; size_t xPortGetFreeHeapSize( void ) PRIVILEGED_FUNCTION;