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);
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |