REF: https://bugzilla.tianocore.org/show_bug.cgi?id=4144 This Library provides API to dump Trace Hub message. Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Guo Gua <gua.guo@intel.com> Cc: Chan Laura <laura.chan@intel.com> Cc: Prakashan Krishnadas Veliyathuparambil <krishnadas.veliyathuparambil.prakashan@intel.com> Cc: K N Karthik <karthik.k.n@intel.com> Cc: Jian J Wang <jian.j.wang@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Signed-off-by: Guo Gua <gua.guo@intel.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: K N Karthik <karthik.k.n@intel.com> Reviewed-by: Chan Laura <laura.chan@intel.com> Acked-by: Liming Gao <gaoliming@byosoft.com.cn>
		
			
				
	
	
		
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			75 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
| Functions implementation in this file are not common for all type of TraceHubDebugSysTLib.
 | |
| 
 | |
| Copyright (c) 2023, Intel Corporation. All rights reserved.<BR>
 | |
| 
 | |
| SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #include <Base.h>
 | |
| #include <Guid/TraceHubDebugInfoHob.h>
 | |
| #include <Library/BaseMemoryLib.h>
 | |
| #include <Library/HobLib.h>
 | |
| #include "InternalTraceHubApi.h"
 | |
| 
 | |
| /**
 | |
|   Count the total number of Trace Hub debug instance in the system.
 | |
| 
 | |
|   @retval UINT32      The total number of Trace Hub debug instance in the system.
 | |
| **/
 | |
| UINT32
 | |
| EFIAPI
 | |
| CountThDebugInstance (
 | |
|   VOID
 | |
|   )
 | |
| {
 | |
|   UINT8   *DbgContext;
 | |
|   UINT32  DbgInstCount;
 | |
| 
 | |
|   DbgInstCount = 0;
 | |
| 
 | |
|   DbgContext = (UINT8 *)GetFirstGuidHob (&gTraceHubDebugInfoHobGuid);
 | |
|   if (DbgContext != NULL) {
 | |
|     while (DbgContext != NULL) {
 | |
|       DbgInstCount++;
 | |
|       DbgContext = (UINT8 *)GetNextGuidHob (&gTraceHubDebugInfoHobGuid, GET_NEXT_HOB (DbgContext));
 | |
|     }
 | |
|   } else {
 | |
|     DbgInstCount++;
 | |
|   }
 | |
| 
 | |
|   return DbgInstCount;
 | |
| }
 | |
| 
 | |
| /**
 | |
|   Pack Trace Hub debug instances in the system.
 | |
| 
 | |
|   @param[in, out]  ThPtr     A pointer to TRACEHUB_DEBUG_INFO_HOB structure.
 | |
|   @param[in]       Count     Number of Trace Hub HOBs.
 | |
| **/
 | |
| VOID
 | |
| EFIAPI
 | |
| PackThDebugInstance (
 | |
|   IN OUT TRACEHUB_DEBUG_INFO_HOB  *ThPtr,
 | |
|   IN     UINT32                   Count
 | |
|   )
 | |
| {
 | |
|   UINT8   *DbgContext;
 | |
|   UINT16  Index;
 | |
| 
 | |
|   DbgContext = GetFirstGuidHob (&gTraceHubDebugInfoHobGuid);
 | |
|   if (DbgContext != NULL) {
 | |
|     for (Index = 0; Index < Count; Index++) {
 | |
|       CopyMem (&ThPtr[Index], GET_GUID_HOB_DATA (DbgContext), sizeof (TRACEHUB_DEBUG_INFO_HOB));
 | |
|       DbgContext = GetNextGuidHob (&gTraceHubDebugInfoHobGuid, GET_NEXT_HOB (DbgContext));
 | |
|     }
 | |
|   } else {
 | |
|     for (Index = 0; Index < Count; Index++) {
 | |
|       ThPtr[Index].TraceHubMmioAddress = FixedPcdGet64 (PcdTraceHubDebugMmioAddress);
 | |
|       ThPtr[Index].Flag                = FixedPcdGetBool (PcdEnableTraceHubDebugMsg);
 | |
|       ThPtr[Index].DebugLevel          = FixedPcdGet8 (PcdTraceHubDebugLevel);
 | |
|     }
 | |
|   }
 | |
| }
 |