Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
}