void WIPolicyPowerBossConditionsTableChanged::execute(void) { writeWorkItemStartingInfoMessage(); auto policyManager = getPolicyManager(); UIntN policyListCount = policyManager->getPolicyListCount(); for (UIntN i = 0; i < policyListCount; i++) { try { Policy* policy = policyManager->getPolicyPtr(i); policy->executePolicyPowerBossConditionsTableChanged(); } catch (policy_index_invalid ex) { // do nothing. No item in the policy list at this index. } catch (std::exception& ex) { writeWorkItemErrorMessagePolicy(ex, "Policy::executePolicyPowerBossConditionsTableChanged", i); } } }
void WIPolicyOperatingSystemPlatformTypeChanged::execute(void) { writeWorkItemStartingInfoMessage(); auto policyManager = getPolicyManager(); auto policyIndexes = policyManager->getPolicyIndexes(); for (auto i = policyIndexes.begin(); i != policyIndexes.end(); ++i) { try { getDptfManager()->getEventCache()->platformType.set(m_platformType); Policy* policy = policyManager->getPolicyPtr(*i); policy->executePolicyOperatingSystemPlatformTypeChanged(m_platformType); } catch (policy_index_invalid& ex) { // do nothing. No item in the policy list at this index. } catch (std::exception& ex) { writeWorkItemErrorMessagePolicy(ex, "Policy::executePolicyOperatingSystemPlatformTypeChanged", *i); } } }
void WIDptfConnectedStandbyEntry::execute(void) { writeWorkItemStartingInfoMessage(); // First let all policies know that we are entering connected standby auto policyManager = getPolicyManager(); auto policyIndexes = policyManager->getPolicyIndexes(); for (auto i = policyIndexes.begin(); i != policyIndexes.end(); ++i) { try { Policy* policy = policyManager->getPolicyPtr(*i); policy->executeConnectedStandbyEntry(); } catch (policy_index_invalid& ex) { // do nothing. No item in the policy list at this index. } catch (std::exception& ex) { writeWorkItemErrorMessagePolicy(ex, "Policy::executeConnectedStandbyEntry", *i); } } // Now let all participants know auto participantManager = getParticipantManager(); auto participantIndexList = participantManager->getParticipantIndexes(); for (auto i = participantIndexList.begin(); i != participantIndexList.end(); ++i) { try { Participant* participant = participantManager->getParticipantPtr(*i); participant->connectedStandbyEntry(); } catch (participant_index_invalid& ex) { // do nothing. No item in the participant list at this index. } catch (std::exception& ex) { writeWorkItemErrorMessageParticipant(ex, "Participant::connectedStandbyEntry", *i); } } }
void WIPolicyCreateAll::execute(void) { writeWorkItemStartingInfoMessage(); try { EsifFileEnumerator fileEnumerator(m_policyDirectoryPath, "DptfPolicy*" ESIF_LIB_EXT); std::string policyFileName = fileEnumerator.getFirstFile(); while (policyFileName.length() > 0) { try { std::string policyFilePath = m_policyDirectoryPath + policyFileName; if (getDptfManager()->isDptfPolicyLoadNameOnly()) { policyFilePath.erase(0, m_policyDirectoryPath.length()); } getDptfManager()->getPolicyManager()->createPolicy(policyFilePath); } catch (std::exception& ex) { writeWorkItemWarningMessage(ex, "PolicyManager::createPolicy", "Policy File Name", policyFileName); } catch (...) { dptf_exception ex("Unknown exception type caught when attempting to create a policy."); writeWorkItemWarningMessage(ex, "PolicyManager::createPolicy", "Policy File Name", policyFileName); } policyFileName = fileEnumerator.getNextFile(); } } catch (std::exception& ex) { writeWorkItemErrorMessage(ex, "PolicyManager::createAllPolicies"); } catch (...) { dptf_exception ex("Unknown exception type caught when attempting to create all policies."); writeWorkItemErrorMessage(ex, "PolicyManager::createAllPolicies"); } }
void WIPolicyReload::execute(void) { writeWorkItemStartingInfoMessage(); // Iterate through the list of policies and unbind all participant and domains from them DptfManagerInterface* dptfManager = getDptfManager(); auto policyManager = getPolicyManager(); auto participantIndexList = getParticipantManager()->getParticipantIndexes(); // Unbind every participant and domain from every policy for (auto participantIndex = participantIndexList.begin(); participantIndex != participantIndexList.end(); ++participantIndex) { dptfManager->unbindDomainsFromPolicies(*participantIndex); dptfManager->unbindParticipantFromPolicies(*participantIndex); } // No try-catch here because destroyAllPolicies' calling tree catches all exceptions. policyManager->destroyAllPolicies(); try { policyManager->reloadAllPolicies(dptfManager->getDptfPolicyDirectoryPath()); } catch (dptf_exception ex) { writeWorkItemErrorMessage(ex, "policyManager::reloadAllPolicies"); } // Bind every participant and domain to every policy for (auto participantIndex = participantIndexList.begin(); participantIndex != participantIndexList.end(); ++participantIndex) { dptfManager->bindParticipantToPolicies(*participantIndex); dptfManager->bindDomainsToPolicies(*participantIndex); } }
void WIPolicyOemVariablesChanged::execute(void) { writeWorkItemStartingInfoMessage(); auto policyManager = getPolicyManager(); auto policyIndexes = policyManager->getPolicyIndexes(); for (auto i = policyIndexes.begin(); i != policyIndexes.end(); ++i) { try { Policy* policy = policyManager->getPolicyPtr(*i); policy->executePolicyOemVariablesChanged(); } catch (policy_index_invalid& ex) { // do nothing. No item in the policy list at this index. } catch (std::exception& ex) { writeWorkItemErrorMessagePolicy(ex, "Policy::executePolicyOemVariablesChanged", *i); } } }