3 dSXt j |d}t |dkrbd|_|}x|D]}|jj |qhWt jdt|jdS)NTFzuncore*rz devices: %s)Z_devices_supportedsetZ_assigned_devicesZ _free_devicesZ_is_tpmioslistdir SYSFS_DIROSErrorfnmatchfilterlenaddlogdebugstr)selfZdevicesZ tpmi_devicesdr#/usr/lib/python3.6/plugin_uncore.py _init_devices$s   zUncorePlugin._init_devicescCsd|_d|_dS)NTF)Z_has_static_tuningZ_has_dynamic_tuning)rinstancerrr_instance_init:szUncorePlugin._instance_initcCsdS)Nr)rrrrr_instance_cleanup>szUncorePlugin._instance_cleanupcCs2t|d|}tj|}t|dkr.t|SdS)N/r)r cmdZ read_filerint)rdev_dirfile sysfs_filevaluerrr_getAs   zUncorePlugin._getcCs(t|d|}tj|d|r$|SdS)Nrz%u)r rZ write_to_file)rrrr!r rrr_setHszUncorePlugin._setcCs dddS)N) max_freq_khz min_freq_khzr)clsrrr_get_config_optionsNsz UncorePlugin._get_config_optionsc Cs*y t|}Wn"tk r.tjd|dSXy4|j|d}|j|d}|j|d}|j|d}Wn"ttfk rtjddSX|tkr||krtjd|||fdS||krtjd|||f|}nT|t kr"||krtjd |||fdS||kr&tjd |||f|}ndS|S) Nzvalue '%s' is not integerinitial_max_freq_khzinitial_min_freq_khzr$r%z+fail to read inital uncore frequency valuesz/%s: max_freq_khz %d value below min_freq_khz %dzC%s: max_freq_khz %d value above initial_max_freq_khz - capped to %dz/%s: min_freq_khz %d value above max_freq_khz %dzC%s: min_freq_khz %d value below initial_max_freq_khz - capped to %d) r ValueErrorrerrorr"r IOErrorIS_MAXinfoIS_MIN) rdeviceZ min_or_maxr!Zfreq_khzr(r)r$r%rrr_validate_valueUs:        zUncorePlugin._validate_valuer$T)Z per_devicecCsB|j|t|}|dkrdS|r"|Stjd||f|j|d|S)Nz%s: set max_freq_khz %dr$)r1r-rrr#)rr!r0simremover$rrr_set_max_freq_khz|szUncorePlugin._set_max_freq_khzFc Cs`|rtjjt rdSy|j|d}Wn"ttfk rHtjddSXtj d||f|S)Nr$z$fail to read uncore frequency valuesz%s: get max_freq_khz %d) rpathisdirr r"r r,rr+r)rr0ignore_missingr$rrr_get_max_freq_khzs zUncorePlugin._get_max_freq_khzr%cCsB|j|t|}|dkrdS|r"|Stjd||f|j|d|S)Nz%s: set min_freq_khz %dr%)r1r/rrr#)rr!r0r2r3r%rrr_set_min_freq_khzszUncorePlugin._set_min_freq_khzc Cs`|rtjjt rdSy|j|d}Wn"ttfk rHtjddSXtj d||f|S)Nr%z$fail to read uncore frequency valuesz%s: get min_freq_khz %d) rr5r6r r"r r,rr+r)rr0r7r%rrr_get_min_freq_khzs zUncorePlugin._get_min_freq_khzN)F)F)__name__ __module__ __qualname____doc__rrrr"r# classmethodr'r1Z command_setr4Z command_getr8r9r:rrrrrs '   r)rZ decoratorsZ tuned.logsZtunedZtuned.utils.commandsrrr Zlogsgetrrr r/r-ZPluginrrrrrs