REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737 Apply uncrustify changes to .c/.h files in the UefiCpuPkg package Cc: Andrew Fish <afish@apple.com> Cc: Leif Lindholm <leif@nuviainc.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com> Reviewed-by: Ray Ni <ray.ni@intel.com>
		
			
				
	
	
		
			86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			86 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /** @file
 | |
|   Header file for CPU Cache info Library.
 | |
| 
 | |
|   Copyright (c) 2020 - 2021, Intel Corporation. All rights reserved.<BR>
 | |
|   SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| 
 | |
| **/
 | |
| 
 | |
| #ifndef _CPU_CACHE_INFO_LIB_H_
 | |
| #define _CPU_CACHE_INFO_LIB_H_
 | |
| 
 | |
| typedef struct {
 | |
|   //
 | |
|   // Package number.
 | |
|   //
 | |
|   UINT32    Package;
 | |
|   //
 | |
|   // Core type of logical processor.
 | |
|   // Value = CPUID.1Ah:EAX[31:24]
 | |
|   //
 | |
|   UINT8     CoreType;
 | |
|   //
 | |
|   // Level of the cache that this package's this type of logical processor corresponds to.
 | |
|   // Value = CPUID.04h:EAX[07:05]
 | |
|   //
 | |
|   UINT8     CacheLevel            : 3;
 | |
|   //
 | |
|   // Type of the cache that this package's this type of logical processor corresponds to.
 | |
|   // Value = CPUID.04h:EAX[04:00]
 | |
|   //
 | |
|   UINT8     CacheType             : 5;
 | |
|   //
 | |
|   // Ways of associativity.
 | |
|   // Value = CPUID.04h:EBX[31:22]
 | |
|   //
 | |
|   UINT16    CacheWays             : 10;
 | |
|   //
 | |
|   // Fully associative cache.
 | |
|   // Value = CPUID.04h:EAX[09]
 | |
|   //
 | |
|   UINT16    FullyAssociativeCache : 1;
 | |
|   //
 | |
|   // Direct mapped cache.
 | |
|   // Value = CPUID.04h:EDX[02]
 | |
|   //
 | |
|   UINT16    DirectMappedCache     : 1;
 | |
|   UINT16    Reserved              : 4;
 | |
|   //
 | |
|   // Size of single cache that this package's this type of logical processor corresponds to.
 | |
|   // Value = (CPUID.04h:EBX[31:22] + 1) * (CPUID.04h:EBX[21:12] + 1) *
 | |
|   //         (CPUID.04h:EBX[11:00] + 1) * (CPUID.04h:ECX[31:00] + 1)
 | |
|   //
 | |
|   UINT32    CacheSizeinKB;
 | |
|   //
 | |
|   // Number of the cache that this package's this type of logical processor corresponds to.
 | |
|   // Have subtracted the number of caches that are shared.
 | |
|   //
 | |
|   UINT16    CacheCount;
 | |
| } CPU_CACHE_INFO;
 | |
| 
 | |
| /**
 | |
|   Get CpuCacheInfo data array. The array is sorted by CPU package ID, core type, cache level and cache type.
 | |
| 
 | |
|   @param[in, out] CpuCacheInfo        Pointer to the CpuCacheInfo array.
 | |
|   @param[in, out] CpuCacheInfoCount   As input, point to the length of response CpuCacheInfo array.
 | |
|                                       As output, point to the actual length of response CpuCacheInfo array.
 | |
| 
 | |
|   @retval         EFI_SUCCESS             Function completed successfully.
 | |
|   @retval         EFI_INVALID_PARAMETER   CpuCacheInfoCount is NULL.
 | |
|   @retval         EFI_INVALID_PARAMETER   CpuCacheInfo is NULL while CpuCacheInfoCount contains the value
 | |
|                                           greater than zero.
 | |
|   @retval         EFI_UNSUPPORTED         Processor does not support CPUID_CACHE_PARAMS Leaf.
 | |
|   @retval         EFI_OUT_OF_RESOURCES    Required resources could not be allocated.
 | |
|   @retval         EFI_BUFFER_TOO_SMALL    CpuCacheInfoCount is too small to hold the response CpuCacheInfo
 | |
|                                           array. CpuCacheInfoCount has been updated with the length needed
 | |
|                                           to complete the request.
 | |
| **/
 | |
| EFI_STATUS
 | |
| EFIAPI
 | |
| GetCpuCacheInfo (
 | |
|   IN OUT CPU_CACHE_INFO  *CpuCacheInfo,
 | |
|   IN OUT UINTN           *CpuCacheInfoCount
 | |
|   );
 | |
| 
 | |
| #endif
 |