/* Returns the Number of SMM Delayed & Blocked & Disabled Thread Count. */
VOID GetSmmDelayedBlockedDisabledCount(IN OUT UINT32 *DelayedCount, IN OUT UINT32 *BlockedCount, IN OUT UINT32 *DisabledCount)
/* Returns the Number of SMM Delayed & Blocked & Disabled Thread Count. */
VOID GetSmmDelayedBlockedDisabledCount(IN OUT UINT32 *DelayedCount, IN OUT UINT32 *BlockedCount, IN OUT UINT32 *DisabledCount)
{
  UINTN  Index;
  for (Index = 0; Index < mNumberOfCpus; Index++) {
    if (IsPackageFirstThread (Index)) {
      if (DelayedCount != NULL) {
        *DelayedCount += (UINT32)SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmDelayed);
      }
      if (BlockedCount != NULL) {
        *BlockedCount += (UINT32)SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmBlocked);
      }
      if (DisabledCount != NULL) {
        *DisabledCount += (UINT32)SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmEnable);
      }
    }
  }
}