void PolicyServicesMessageLogging::writeMessageDebug(const DptfMessage& message)
{
    throwIfNotWorkItemThread();

    ManagerMessage updatedMessage = ManagerMessage(getDptfManager(), message);
    updatedMessage.setPolicyIndex(getPolicyIndex());

    getEsifServices()->writeMessageDebug(updatedMessage);
}
Beispiel #2
0
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);
}
Beispiel #4
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;
}