o
    O6ufš  ã                   @   s>   d dl Z d dlmZ d dlmZmZmZ G dd„ deeƒZdS )é    N)ÚRedHatPolicy)ÚPluginÚIndependentPluginÚ	PluginOptc                   @   sH   e Zd ZdZdZdZdZdZdZe	ddd	d
�e	dddd
�gZ
dd„ ZdS )ÚKernela©  The Kernel plugin is aimed at collecting general information about
    the locally running kernel. This information should be distribution-neutral
    using commands and filesystem collections that are ubiquitous across
    distributions.

    Debugging information from /sys/kernel/debug is collected by default,
    however care is taken so that these collections avoid areas like
    /sys/kernel/debug/tracing/trace_pipe which would otherwise cause the
    sos collection attempt to appear to 'hang'.

    The 'trace' option will enable the collection of the
    /sys/kernel/debug/tracing/trace file specfically, but will not change the
    behavior stated above otherwise.
    zLinux kernelÚkernel)ÚsystemÚhardwarer   )úkernel$z/sys/moduleú
with-timerFzgather /proc/timer* statistics)ÚdefaultÚdescÚtracez+gather /sys/kernel/debug/tracing/trace filec                 C   s   t | jtƒr	d| _| jdddd� | jdddd� |  d¡ z|  | j¡}| jdd |¡ d	d
d� W n tyE   |  	d| j› �¡ Y nw g d¢}g }|D ]
}| 
t |¡¡ qN|rg|  dd |¡› d�¡ | jg d¢dd� | jddd� d}|  g d¢¡ |  g d‘d‘d‘d‘d‘d‘d‘d‘d ‘d!‘d"‘d#‘d$‘d%‘d&| j ¡ › d'�‘d(‘d)‘d*‘d+‘d,‘d-‘d.‘d/‘d0‘d1‘d2‘d3‘d4‘d5‘d6‘d7‘d8‘d9‘d:‘d;‘d<‘d=‘|d> ‘|d? ‘d@‘dA| j ¡ › �‘¡ |  dB¡rò|  dC¡ |  dD¡sþ|  dE¡ d S d S )FN)r
   zkernel-redhat$zuname -aÚuname)Úroot_symlinkÚtagsÚlsmodzls -lt /sys/kernel/slabzmodinfo ú Úmodinfo_ALL_MODULESÚmodinfo_all)Úsuggest_filenamer   zcould not list )z/lib/modules/*/extraz/lib/modules/*/updatesz/lib/modules/*/weak-updateszfind z -ls)Údmesgzdmesg -Tzdkms statusT)Ú
cmd_as_tagz	sysctl -aÚsysctl)r   z-/sys/devices/system/clocksource/clocksource0/)z$/sys/kernel/debug/tracing/trace_pipez /sys/kernel/debug/tracing/READMEz$/sys/kernel/debug/tracing/trace_statz!/sys/kernel/debug/tracing/per_cpuz /sys/kernel/debug/tracing/eventsz%/sys/kernel/debug/tracing/free_bufferz&/sys/kernel/debug/tracing/trace_markerz*/sys/kernel/debug/tracing/trace_marker_rawz</sys/kernel/debug/tracing/instances/*/per_cpu/*/snapshot_rawz;/sys/kernel/debug/tracing/instances/*/per_cpu/*/trace_pipe*z0/sys/kernel/debug/tracing/instances/*/trace_pipez/proc/modulesz/proc/sys/kernel/random/boot_idz/sys/module/*/parametersz/sys/module/*/initstatez/sys/module/*/refcntz/sys/module/*/taintz/sys/module/*/versionz/sys/firmware/acpi/*z/sys/kernel/debug/tracing/*z/sys/kernel/livepatch/*z/proc/kallsymsz/proc/buddyinfoz/proc/slabinfoz/proc/zoneinfoz/lib/modules/z/modules.depz/etc/conf.modulesz/etc/modules.confz/etc/modprobe.confz/etc/modprobe.dz/lib/modprobe.dz/run/modprobe.dz/usr/local/lib/modprobe.dz/etc/sysctl.confz/etc/sysctl.dz/lib/sysctl.dz/proc/cmdlinez/proc/driverz/proc/sys/kernel/taintedz/proc/softirqsz/proc/lock*z
/proc/miscz/var/log/dmesgz/sys/fs/pstorez/var/lib/systemd/pstorez'/sys/kernel/debug/dynamic_debug/controlz(/sys/kernel/debug/extfrag/unusable_indexz'/sys/kernel/debug/extfrag/extfrag_indexÚavailable_clocksourceÚcurrent_clocksourcez/proc/pressure/z/boot/config-r   z/proc/timer*r   z/sys/kernel/debug/tracing/trace)Ú
isinstanceÚpolicyr   Úverify_packagesÚadd_cmd_outputÚlistdirÚ
sys_moduleÚjoinÚOSErrorÚ	_log_warnÚextendÚglobÚadd_forbidden_pathÚadd_copy_specÚkernel_versionÚ
get_option)ÚselfÚmodulesÚextra_mod_patternsÚextra_mod_pathsÚpatternÚclocksource_path© r1   ú;/usr/lib/python3/dist-packages/sos/report/plugins/kernel.pyÚsetup-   sä   

þÿ
üÿþýüûúùø	÷
öõôóòñðïîíìëêéèçæåäãâá à!ß"Þ#Ý$Ü%Û&Ú'Ù(Ø)×
,

ÿzKernel.setupN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú
short_descÚplugin_nameÚprofilesr   r!   r   Úoption_listr3   r1   r1   r1   r2   r      s    ÿÿýr   )r&   Úsos.policies.distros.redhatr   Úsos.report.pluginsr   r   r   r   r1   r1   r1   r2   Ú<module>   s   