o
    íìgÜ	  ã                   @   s6   d dl mZmZmZ d dlmZ G dd„ deeƒZdS )é    )ÚPluginÚIndependentPluginÚSoSPredicate)ÚUbuntuPolicyc                   @   s,   e Zd ZdZdZdZdZdZg Zdd„ Z	dS )	Ú	ProcessorzCPU informationÚ	processor)ÚsystemÚhardwareÚmemory)ú/proc/cpuinfo)zcpufreq-utilsÚcpuidc                    sú   d}ˆ   |› d�d|› d�d|› d�d|› d�d	|› d
�d|› d�d|› d�di¡ ˆ  ddg¡ ˆ  d¡}ˆ  ‡ fdd„|D ƒ¡ ˆ jg d¢dd� tˆ jtƒr\ˆ j ¡ dkr\dgˆ _t	ˆ ˆ jd�}ˆ jg d¢d|d� dˆ j 
¡ v r{ˆ  d¡ d S d S )Nú/sys/devices/system/cpuz/smt/controlÚcpu_smt_controlz/smt/activeÚcpu_smt_activez/vulnerabilities/.*Ú	cpu_vulnsz/vulnerabilities/spectre_v2Úcpu_vulns_spectre_v2z/vulnerabilities/meltdownÚcpu_vulns_meltdownz/cpu.*/onlineÚ	cpu_coresz"/cpu/cpu0/cpufreq/cpuinfo_max_freqÚcpuinfo_max_freqr   z/sys/class/cpuidc                    s   g | ]}ˆ   d |¡‘qS )r   )Ú	path_join)Ú.0Úcdir©Úself© ú>/usr/lib/python3/dist-packages/sos/report/plugins/processor.pyÚ
<listcomp>/   s    ÿz#Processor.setup.<locals>.<listcomp>)Úlscpuz	lscpu -aezcpufreq-infor   zcpuid -rT)Ú
cmd_as_tagg
×£p=
6@Úmsr)Úkmods)zcpupower frequency-infozcpupower infozcpupower idle-infozturbostat --debug sleep 10)r   ÚpredÚ86z
x86info -a)Úadd_file_tagsÚadd_copy_specÚlistdirÚadd_cmd_outputÚ
isinstanceÚpolicyr   Údist_versionÚ	cpu_kmodsr   Úget_arch)r   ÚcpupathÚcdirsÚcpupower_predr   r   r   Úsetup   s@   





øþ
ÿ
ú
ûÿzProcessor.setupN)
Ú__name__Ú
__module__Ú__qualname__Ú
short_descÚplugin_nameÚprofilesÚfilesÚpackagesr*   r/   r   r   r   r   r      s    r   N)Úsos.report.pluginsr   r   r   Úsos.policies.distros.ubuntur   r   r   r   r   r   Ú<module>   s   