void TemperatureThresholdArbitrator::throwIfTemperatureThresholdsInvalid(UIntN policyIndex, const TemperatureThresholds& temperatureThresholds, const Temperature& currentTemperature) { Temperature aux0 = temperatureThresholds.getAux0(); Temperature aux1 = temperatureThresholds.getAux1(); if ((aux0.isValid() == true && aux0 > currentTemperature) || (aux1.isValid() == true && aux1 < currentTemperature)) { ManagerMessage message = ManagerMessage(m_dptfManager, FLF, "Received invalid temperature thresholds from policy."); message.setPolicyIndex(policyIndex); message.addMessage("Current Temperature", currentTemperature); message.addMessage("Requested Aux0/Aux1", aux0.toString() + "/" + aux1.toString()); m_dptfManager->getEsifServices()->writeMessageError(message, MessageCategory::TemperatureThresholds); throw dptf_exception(message); } }
void PolicyServicesDomainTemperature::setTemperatureThresholds(UIntN participantIndex, UIntN domainIndex, const TemperatureThresholds& temperatureThresholds) { throwIfNotWorkItemThread(); #ifdef ONLY_LOG_TEMPERATURE_THRESHOLDS // Added to help debug issue with missing temperature threshold events ManagerMessage message = ManagerMessage(getDptfManager(), FLF, "Policy is calling PolicyServicesDomainTemperature::setTemperatureThresholds()."); message.addMessage("Aux0", temperatureThresholds.getAux0()); message.addMessage("Aux1", temperatureThresholds.getAux1()); message.setParticipantAndDomainIndex(participantIndex, domainIndex); message.setPolicyIndex(getPolicyIndex()); getDptfManager()->getEsifServices()->writeMessageDebug(message, MessageCategory::TemperatureThresholds); #endif getParticipantManager()->getParticipantPtr(participantIndex)->setTemperatureThresholds( domainIndex, getPolicyIndex(), temperatureThresholds); }
Bool TemperatureThresholdArbitrator::arbitrate(UIntN policyIndex, const TemperatureThresholds& temperatureThresholds, const Temperature& currentTemperature) { #ifdef ONLY_LOG_TEMPERATURE_THRESHOLDS ManagerMessage message = ManagerMessage(m_dptfManager, FLF, "Temperature arbitration data is being updated for a policy request."); message.setPolicyIndex(policyIndex); message.addMessage("Current Temperature", currentTemperature); message.addMessage("Requested Aux0/Aux1", temperatureThresholds.getAux0().toString() + "/" + temperatureThresholds.getAux1().toString()); addArbitrationDataToMessage(message, "Arbitration data before applying update"); #endif throwIfTemperatureThresholdsInvalid(policyIndex, temperatureThresholds, currentTemperature); updateTemperatureDataForPolicy(policyIndex, temperatureThresholds); Bool result = findNewTemperatureThresholds(currentTemperature); #ifdef ONLY_LOG_TEMPERATURE_THRESHOLDS addArbitrationDataToMessage(message, "Arbitration data after applying update"); m_dptfManager->getEsifServices()->writeMessageDebug(message, MessageCategory::TemperatureThresholds); #endif return result; }