mirror of
				https://github.com/FreeRTOS/FreeRTOS-Kernel.git
				synced 2025-11-04 11:09:01 +01:00 
			
		
		
		
	Fix MISRA_C_2012 rule 8.4 violation (#844)
Fix MISRA_C_2012 rule 8.4 violation
This commit is contained in:
		
							parent
							
								
									22eb827b3d
								
							
						
					
					
						commit
						d1a0202125
					
				
							
								
								
									
										15
									
								
								MISRA.md
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								MISRA.md
									
									
									
									
									
								
							@ -24,14 +24,15 @@ MISRA C:2012 Rule 8.4: A compatible declaration shall be visible when an
 | 
				
			|||||||
        object or function with external linkage is defined.
 | 
					        object or function with external linkage is defined.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
_Ref 8.4.1_
 | 
					_Ref 8.4.1_
 | 
				
			||||||
 | 
					 - pxCurrentTCB(s) is defined with external linkage but it is only referenced
 | 
				
			||||||
 | 
					   from the assembly code in the port files. Therefore, adding a declaration in
 | 
				
			||||||
 | 
					   header file is not useful as the assembly code will still need to declare it
 | 
				
			||||||
 | 
					   separately.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- This rule requires that a compatible declaration is made available
 | 
					_Ref 8.4.2_
 | 
				
			||||||
  in a header file when an object with external linkage is defined.
 | 
					 - xQueueRegistry is defined with external linkage because it is accessed by the
 | 
				
			||||||
  pxCurrentTCB(s) is defined with external linkage but it is only
 | 
					   kernel unit tests. It is not meant to be directly accessed by the application
 | 
				
			||||||
  referenced from the assembly code in the port files. Therefore, adding
 | 
					   and therefore, not declared in a header file.
 | 
				
			||||||
  a declaration in header file is not useful as the assembly code will
 | 
					 | 
				
			||||||
  still need to declare it separately.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### Rule 11.3
 | 
					#### Rule 11.3
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										4
									
								
								queue.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								queue.c
									
									
									
									
									
								
							@ -165,6 +165,10 @@ typedef xQUEUE Queue_t;
 | 
				
			|||||||
/* The queue registry is simply an array of QueueRegistryItem_t structures.
 | 
					/* The queue registry is simply an array of QueueRegistryItem_t structures.
 | 
				
			||||||
 * The pcQueueName member of a structure being NULL is indicative of the
 | 
					 * The pcQueueName member of a structure being NULL is indicative of the
 | 
				
			||||||
 * array position being vacant. */
 | 
					 * array position being vacant. */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/* MISRA Ref 8.4.2 [Declaration shall be visible] */
 | 
				
			||||||
 | 
					/* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-84 */
 | 
				
			||||||
 | 
					/* coverity[misra_c_2012_rule_8_4_violation] */
 | 
				
			||||||
    PRIVILEGED_DATA QueueRegistryItem_t xQueueRegistry[ configQUEUE_REGISTRY_SIZE ];
 | 
					    PRIVILEGED_DATA QueueRegistryItem_t xQueueRegistry[ configQUEUE_REGISTRY_SIZE ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#endif /* configQUEUE_REGISTRY_SIZE */
 | 
					#endif /* configQUEUE_REGISTRY_SIZE */
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										5
									
								
								tasks.c
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								tasks.c
									
									
									
									
									
								
							@ -436,6 +436,9 @@ typedef tskTCB TCB_t;
 | 
				
			|||||||
/*lint -save -e956 A manual analysis and inspection has been used to determine
 | 
					/*lint -save -e956 A manual analysis and inspection has been used to determine
 | 
				
			||||||
 * which static variables must be declared volatile. */
 | 
					 * which static variables must be declared volatile. */
 | 
				
			||||||
#if ( configNUMBER_OF_CORES == 1 )
 | 
					#if ( configNUMBER_OF_CORES == 1 )
 | 
				
			||||||
 | 
					    /* MISRA Ref 8.4.1 [Declaration shall be visible] */
 | 
				
			||||||
 | 
					    /* More details at: https://github.com/FreeRTOS/FreeRTOS-Kernel/blob/main/MISRA.md#rule-84 */
 | 
				
			||||||
 | 
					    /* coverity[misra_c_2012_rule_8_4_violation] */
 | 
				
			||||||
    portDONT_DISCARD PRIVILEGED_DATA TCB_t * volatile pxCurrentTCB = NULL;
 | 
					    portDONT_DISCARD PRIVILEGED_DATA TCB_t * volatile pxCurrentTCB = NULL;
 | 
				
			||||||
#else
 | 
					#else
 | 
				
			||||||
    /* MISRA Ref 8.4.1 [Declaration shall be visible] */
 | 
					    /* MISRA Ref 8.4.1 [Declaration shall be visible] */
 | 
				
			||||||
@ -490,7 +493,7 @@ PRIVILEGED_DATA static TaskHandle_t xIdleTaskHandles[ configNUMBER_OF_CORES ];
 | 
				
			|||||||
/* Improve support for OpenOCD. The kernel tracks Ready tasks via priority lists.
 | 
					/* Improve support for OpenOCD. The kernel tracks Ready tasks via priority lists.
 | 
				
			||||||
 * For tracking the state of remote threads, OpenOCD uses uxTopUsedPriority
 | 
					 * For tracking the state of remote threads, OpenOCD uses uxTopUsedPriority
 | 
				
			||||||
 * to determine the number of priority lists to read back from the remote target. */
 | 
					 * to determine the number of priority lists to read back from the remote target. */
 | 
				
			||||||
const volatile UBaseType_t uxTopUsedPriority = configMAX_PRIORITIES - 1U;
 | 
					static const volatile UBaseType_t uxTopUsedPriority = configMAX_PRIORITIES - 1U;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/* Context switches are held pending while the scheduler is suspended.  Also,
 | 
					/* Context switches are held pending while the scheduler is suspended.  Also,
 | 
				
			||||||
 * interrupts must not manipulate the xStateListItem of a TCB, or any of the
 | 
					 * interrupts must not manipulate the xStateListItem of a TCB, or any of the
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user