void DomainConfigTdpControl_001::createConfigTdpControlSet(UIntN domainIndex) { // Build TDPL table UInt32 dataLength = 0; DptfMemory binaryData(Constants::DefaultBufferSize); m_participantServicesInterface->primitiveExecuteGet( esif_primitive_type::GET_PROC_CTDP_POINT_LIST, ESIF_DATA_BINARY, binaryData, binaryData.getSize(), &dataLength, domainIndex); std::vector<ConfigTdpControl> controls = BinaryParse::processorTdplObject(dataLength, binaryData); binaryData.deallocate(); checkHWConfigTdpSupport(controls, domainIndex); // If any lock bit is set, we only provide 1 cTDP level to the policies. if (m_configTdpLock) { while (controls.size() > 1) { controls.pop_back(); } } m_configTdpControlSet = new ConfigTdpControlSet(controls); }
void DomainConfigTdpControl_001::createConfigTdpControlSet(UIntN domainIndex) { // Build TDPL table DptfBuffer buffer = getParticipantServices()->primitiveExecuteGet( esif_primitive_type::GET_PROC_CTDP_POINT_LIST, ESIF_DATA_BINARY, domainIndex); std::vector<ConfigTdpControl> controls = BinaryParse::processorTdplObject(buffer); checkHWConfigTdpSupport(controls, domainIndex); // If any lock bit is set, we only provide 1 cTDP level to the policies. if (m_configTdpLock) { while (controls.size() > 1) { controls.pop_back(); } } m_configTdpControlSet = new ConfigTdpControlSet(controls); }