
    hC                        S SK r S SKrS SKrS SKrS SKJrJrJrJrJ	r	J
r
Jr  S SKJr  \R                  " \R                  S   5      rS\S :  a  \OS-  rSr\\\4   r\R*                  " \5      rS$S\S	\S
\
\   S\S\
\   4
S jjr " S S\	5      r " S S5      r " S S\5      r " S S\5      r " S S\5      r " S S\5      r  " S S\5      r! " S S\5      r" " S S\5      r# " S  S!\5      r$ " S" S#\5      r%\%\!\"\\\ \\$\#/	r&g)%    N)AnyDefaultDictIterableList
NamedTupleOptionalTuple)Handle
SC_CLK_TCK  d   z/sys/class/hwmonrootfdstatfiledefaultkeyreturnc                     [         R                  " U[         R                  U S9n [         R                  " US5      n [         R                  " U5        U(       a3  UR                  U5      [        U5      -   nUR                  SU5      nXWU n [        U5      =(       d    U$ ! [         a     g f = f! [
         aT  nUR                  [        R                  :w  a  [        R                  SX5         S nA[         R                  " U5        g S nAff = f! [         R                  " U5        f = f! [         a     g f = f)Ndir_fd   zFailed to read %s: %s   
)osopenO_RDONLYFileNotFoundErrorreadOSErrorerrnoENODEVloggerwarningcloseindexlenint
ValueError)	r   r   r   r   fddataestartends	            1/usr/lib/python3/dist-packages/cockpit/samples.pyread_int_filer-   %   s    WWXr{{6:wwr4  	


3#c(*jj&#4y#G#)  
  77ell"NN2H@
 	  sL   $B$ B4 D0 $
B10B14
D>4D2D DD D-0
D=<D=c                   >    \ rS rSr% \\S'   \\S'   \\S'   \\S'   Srg)SampleDescriptionC   nameunits	semantics	instanced N)__name__
__module____qualname____firstlineno__str__annotations__bool__static_attributes__r5       r,   r/   r/   C   s    
IJNOr>   r/   c                   8    \ rS rSr% \\   \S'   S\SS4S jrSr	g)SamplerJ   descriptionssamplesr   Nc                     [         e)N)NotImplementedError)selfrC   s     r,   sampleSampler.sampleM   s    !!r>   r5   )
r6   r7   r8   r9   r   r/   r;   SamplesrG   r=   r5   r>   r,   r@   r@   J   s!    ())"g "$ "r>   r@   c                       \ rS rSr\" SSSSS9\" SSSSS9\" SSSSS9\" S	SSSS9\" S
SSSS9\" SSSSS9\" SSSSS9\" SSSSS9/rS\SS4S jrSrg)
CPUSamplerQ   zcpu.basic.nicemilliseccounterFr4   zcpu.basic.userzcpu.basic.systemzcpu.basic.iowaitzcpu.core.niceTzcpu.core.userzcpu.core.systemzcpu.core.iowaitrC   r   Nc                    [        S5       nU GH  nUR                  S5      (       d  M  UR                  5       S S u  pEpgpUSS  =(       d    S n
U
(       al  Sn[        U5      [        -  X S3   U
'   [        U5      [        -  X S3   U
'   [        U5      [        -  X S3   U
'   [        U	5      [        -  X S	3   U
'   M  S
n[        U5      [        -  X S3'   [        U5      [        -  X S3'   [        U5      [        -  X S3'   [        U	5      [        -  X S	3'   GM     S S S 5        g ! , (       d  f       g = f)Nz
/proc/statcpu      zcpu.corez.nicez.userz.systemz.iowaitz	cpu.basic)r   
startswithsplitr%   MS_PER_JIFFY)rF   rC   statlinerQ   usernicesystem_idleiowaitcoreprefixs               r,   rG   CPUSampler.sample^   s=   ,4u--9=bq9I6412w$'F69$i,6NGhe,-d369$i,6NGhe,-d38;Fl8RGhg./58;Fl8RGhg./5(F03D	L0HGhe,-03D	L0HGhe,-25f+2LGhg./25f+2LGhg./!   s   DD//
D=r5   	r6   r7   r8   r9   r/   rB   rI   rG   r=   r5   r>   r,   rK   rK   Q   s    *J	US*J	US,j)uU,j)uU/:yDQ/:yDQ+ZdS+ZdS
LMg M$ Mr>   rK   c            
       j    \ rS rSr\" SSSSS9\" SSSSS9\" SSSSS9\" S	SSSS9/rS
\SS4S jrSrg)MemorySamplers   memory.freebytesinstantFrO   memory.usedmemory.cachedmemory.swap-usedrC   r   Nc                 \   [        S5       nU VVVs0 s H1  o3R                  SS5      u  pEU[        UR                  S5      5      _M3     nnnnS S S 5        SWS   -  US'   SUS   US	   -
  -  US
'   SUS   US   -   -  US'   SUS   US   -
  -  US'   g s  snnnf ! , (       d  f       NT= f)Nz/proc/meminfo:   z kB
r   MemFreere   MemTotalMemAvailablerh   BuffersCachedri   	SwapTotalSwapFreerj   )r   rU   r%   strip)rF   rC   meminforX   kvitemss          r,   rG   MemorySampler.sample{   s    /"g:Ac'$zzZ]_`OadaQAGGG,--Q'Ec # "&i(8!8!%z):U>=R)R!S#'5+;eHo+M#N &*eK.@5CT.T&U"# d #"s   B8B
BB
B+r5   ra   r5   r>   r,   rc   rc   s   sX    -)uM-)uM/7IO,gyER	LVg V$ Vr>   rc   c                       \ rS rSr% Sr\\\      \S'   \	" SSSSS9/r
\S	\S
\\   4S j5       r\S
\\   4S j5       rS\S
S4S jrSrg)CPUTemperatureSampler   Nsensorscpu.temperaturecelsiusrg   TrO   r   r   c              #   $  #     [         R                  " S[        R                  U S9 n[        R                  " US5      R                  5       R                  5       nS S S 5        WS:X  a  S nOUS:X  a  S nOUS:X  a  S nO
US;   a  S nOg [        R                  " U 5       H  nUR                  S	5      (       d  M  U(       a   UR                  S	S
5      n[         R                  " U[        R                  U S9 n[        R                  " US5      R                  5       R                  5       nS S S 5        U" W5      (       d  M  Uv   M     g ! , (       d  f       N= f! [         a     g f = f! , (       d  f       NG= f! [         a     M  f = f7f)Nr1   r   r   atk0110c                     U S:H  $ )NzCPU Temperaturer5   )labels    r,   <lambda>:CPUTemperatureSampler.detect_cpu_sensors.<locals>.<lambda>   s
    u0A'Ar>   cpu_thermalcoretemp)k8tempk10temp_input_label)r
   r   r   r   r   decoderu   r   listdirendswithreplace)r   r'   r1   	predicateinput_filenamelabel_filenamer   s          r,   detect_cpu_sensors(CPUTemperatureSampler.detect_cpu_sensors   sQ    	VR[[@Bwwr4(//1779 A
 9AI]"IZI**I  !jj0N!**844%3%;%;Hh%ON^R[[PTV "D 1 8 8 : @ @ B Q
 !''  ! 1+ A@  		6 QP( s   F$E 4EE $AF6E?94E.-E?5F
EE FE 
E+(F*E++F.
E<	8E?;F<E??
F	FFFc            	   #     #     [         R                  " [        [        R                  [        R
                  -  5      n U    [        R                  " U 5       Hm  n[         R                  " U[        R                  [        R
                  -  U S9 n[        R                  U5       H  n[         SU SU 3v   M     S S S 5        Mo     S S S 5        g ! [         a     g f = f! , (       d  f       M  = f! , (       d  f       g = f7f)Nr   /)
r
   r   
HWMON_PATHr   r   O_DIRECTORYr   r   r|   r   )top_fd
hwmon_name	subdir_fdsensors       r,   scan_sensors"CPUTemperatureSampler.scan_sensors   s     	[[R[[2>>-IJF  jj0
[[R[[2>>-IRXY]f"7"J"J9"U!+Aj\6(CC #V ZY 1 V ! 		
 ZY VsX   D:C D AC3-C!<C3	D
CDCD!
C0+C33
D=DrC   c                 Z   U R                   c"  [        [        R                  5       5      U l         U R                    H[  n[	        U5       n[        UR                  5       R                  5       5      nUS:X  a   S S S 5          g  S S S 5        WS-  US   U'   M]     g ! , (       d  f       N= f)Nr   r   r   )r~   listr|   r   r   r%   r   ru   )rF   rC   sensor_pathr   temperatures        r,   rG   CPUTemperatureSampler.sample   s    << 5 B B DEDL<<Kk"f!&++-"5"5"78!# #"# #
 7BD6HG%&{3 (""s   
/B
B*	)r~   )r6   r7   r8   r9   r~   r   r   r:   r;   r/   rB   staticmethodr%   r   r   r   rI   rG   r=   r5   r>   r,   r|   r|      s    #'GXd3i ' 	+Y	TRL (!3 (!8C= (! (!T 
D(3- 
D 
D
Ig 
I$ 
Ir>   r|   c            
       j    \ rS rSr\" SSSSS9\" SSSSS9\" SSSS	S9\" S
SSS	S9/rS\SS4S jrSrg)DiskSampler   disk.all.readrf   rN   FrO   disk.all.writtendisk.dev.readTdisk.dev.writtenrC   r   Nc                    [        S5       nSnSnU H  nUR                  5       R                  5       nUS   nUS   nUS   n	US   n
US:X  a  M=  UR                  S5      (       a  MU  US S S;   a  US	   R	                  5       (       a  Mx  UR                  S
5      (       a  SU;   a  M  [        U	5      S-  n[        U
5      S-  nX;-  nXL-  nXS   U'   XS   U'   M     X1S'   XAS'   S S S 5        g ! , (       d  f       g = f)N/proc/diskstatsr         	   9zdm-)sdhdvdnvmep   r   r   r   r   )r   ru   rU   rT   isdigitr%   )rF   rC   	diskstatsall_read_bytesall_written_bytesrX   fields	dev_majordev_namenum_sectors_readnum_sectors_written
read_byteswritten_bytess                r,   rG   DiskSampler.sample   s.   #$	N !!++-"1I	!!9#)!9 &,Qi# # &&u-- BQ<#55(2,:N:N:P:P &&v..3(? !12S8
 #$7 83 >,!2!5?(28E*+H5? "B (6O$*;&'M %$$s   CC00
C>r5   ra   r5   r>   r,   r   r      sV    /7IO,gyER/7IN,gyDQ	L'<g '<$ '<r>   r   c                       \ rS rSr% \" SSSSS9\" SSSSS9\" SSSSS9\" S	SSSS9\" S
SSSS9\" SSSSS9/rSr\\   \	S'   S\
SS4S jrSrg)CGroupSampleri  cgroup.memory.usagerf   rg   TrO   cgroup.memory.limitcgroup.memory.sw-usagecgroup.memory.sw-limitcgroup.cpu.usagerM   rN   cgroup.cpu.sharescountN
cgroups_v2rC   r   c                    U R                   c$  [        R                  R                  S5      U l         U R                   (       a  Sn[        R                  " U5       H  u  n  pEUR                  US5      nU(       d  M"  [        USS5      US   U'   [        US5      US   U'   [        US	S5      US
   U'   [        US5      US   U'   [        US5      US   U'   [        USSSS9nU(       d  M  US-  US   U'   M     g Sn[        R                  " U5       Hl  u  n  pEUR                  US5      nU(       d  M"  [        USS5      US   U'   [        US5      US   U'   [        USS5      US
   U'   [        US5      US   U'   Mn     Sn	[        R                  " U	5       HT  u  n  pEUR                  U	S5      nU(       d  M"  [        US5      US   U'   [        US5      n
U
(       d  MI  U
S-  US   U'   MV     g )Nz!/sys/fs/cgroup/cgroup.controllersz/sys/fs/cgroup/ zmemory.currentr   r   z
memory.maxr   zmemory.swap.currentr   zmemory.swap.maxr   z
cpu.weightr   zcpu.stats
   usage_usec)r   r   r   z/sys/fs/cgroup/memory/zmemory.usage_in_byteszmemory.limit_in_byteszmemory.memsw.usage_in_byteszmemory.memsw.limit_in_bytesz/sys/fs/cgroup/cpu/z
cpu.shareszcpuacct.usagei@B )r   r   pathexistsfwalkr   r-   )rF   rC   cgroups_v2_pathr   _r   cgroup
usage_usecmemory_pathcpu_path
usage_nsecs              r,   rG   CGroupSampler.sample  s   ??" ggnn-PQDO??/O&(hh&?"aor:9FvO_ab9c-.v69Fv|9\-.v6<I&Rgij<k01&9<I&Rc<d01&97DV\7Z+,V4*6:qmT
::Dt:KG./7 '@ 3K&(hh{&;"ak269FvOfhi9j-.v69FvOf9g-.v6<I&Roqr<s01&9<I&Ro<p01&9 '< -H&(hhx&8"ah37DV\7Z+,V4*6?C
::Dw:NG./7 '9r>   )r   )r6   r7   r8   r9   r/   rB   r   r   r<   r;   rI   rG   r=   r5   r>   r,   r   r     s    /)tT/)tT2GYRVW2GYRVW,j)tT-w	TRL "&J%+Og +O$ +Or>   r   c                       \ rS rSr\R
                  " S\R                  S9r\" SSSSS9\" S	SSSS9/r	\
S
\S\4S j5       r\
S
\S\\\4   4S j5       rS\4S jrSrg)CGroupDiskIOi>  s:   \bread_bytes: (?P<read>\d+).*\nwrite_bytes: (?P<write>\d+))flagsdisk.cgroup.readrf   rN   TrO   disk.cgroup.writtenr'   r   c                     [         R                  " S[        R                  U S9 n[        R                  " US5      R                  5       R                  5       nUSS  sS S S 5        $ ! , (       d  f       g = f)Nr   r   i      )r
   r   r   r   r   r   ru   )r'   	cgroup_fdcgroup_names      r,   get_cgroup_nameCGroupDiskIO.get_cgroup_nameE  sQ    [[2;;r:i'')T299;AACK qr?	 ;::s   8A''
A5c                    [         R                  " S[        R                  U S9 n[        R                  " US5      n[
        R                  " [        R                  U5      nU(       a@  [        UR                  S5      5      n[        UR                  S5      5      nXE4sS S S 5        $  S S S 5        g! , (       d  f       g = f)Nior   i   r   write)r   r   )r
   r   r   r   r   researchr   IO_REr%   group)r'   io_fdr(   match	proc_read
proc_writes         r,   get_proc_ioCGroupDiskIO.get_proc_ioM  s    [[r{{26%775$'DIIl00$7EF 34	 W!56
 , 76  766s   A:B3)B33
CrC   c                 t   [         R                  " S[        R                  [        R                  -  5       nUS   nUS   n[        R
                  " U5       H  nUS   S:  d	  US   S:  a  M   [         R                  " U[        R                  US9 nU R                  U5      nU R                  U5      u  pS S S 5        UR                  WS5      W-   X7'   UR                  US5      W	-   XG'   M     S S S 5        g ! , (       d  f       NI= f! [        [        [        4 a     M  f = f! , (       d  f       g = f)Nz/procr   r   r   0r   r   )r
   r   r   r   r   r   O_PATHr   r   r   PermissionErrorProcessLookupErrorget)
rF   rC   proc_fdreadswritesr   pid_fdr   r   r   s
             r,   rG   CGroupDiskIO.sample[  s   [["++">?7./E23F

7+7S=DGcMT299WE&*&:&:6&B040@0@0H-	 F &+YY{A%>%J"&,jja&@:&M# ,	 @? FE *?<NO  @?sS   8D)0$D%C<9D2D)<
D
D	D)
DD&"D)%D&&D))
D7r5   N)r6   r7   r8   r9   r   compileSr   r/   rB   r   r%   r:   r   r	   r   rI   rG   r=   r5   r>   r,   r   r   >  s    JJU]_]a]abE,gyDQ/)tTL
 #C #C # #  c3h  Ng Nr>   r   c                   J    \ rS rSr\" SSSSS9\" SSSSS9/rS\S	S
4S jrSrg
)NetworkSamplerip  network.interface.txrf   rN   TrO   network.interface.rxrC   r   Nc                     [        S5       nU HQ  nUR                  5       nUS   S   S:w  a  M!  US   S S n[        US   5      US   U'   [        US   5      US   U'   MS     S S S 5        g ! , (       d  f       g = f)	Nz/proc/net/devr   r   rl   rm   r  r   r  )r   rU   r%   )rF   rC   network_samplesrX   r   ifaces         r,   rG   NetworkSampler.samplev  s    /"o' !9R=C'q	#29<VAY./69<VAY./6 ( #""   AA--
A;r5   ra   r5   r>   r,   r  r  p  s?    0'9PTU0'9PTUL
Hg H$ Hr>   r  c                   J    \ rS rSr\" SSSSS9\" SSSSS9/rS\S	S
4S jrSrg
)MountSampleri  mount.totalrf   rg   TrO   
mount.usedrC   r   Nc                    [        S5       nU H  nUS   S:w  a  M  UR                  5       tpEpgnSU;   a  SUR                  S5      ;   a  M>  SU;   a  SU;   a  ML   [        R                  " U5      n	U	R
                  n
XR                  -  nXS	   U'   XU	R                  -  -
  US
   U'   M     S S S 5        g ! [         a     M  f = f! , (       d  f       g = f)Nz/proc/mountsr   r   z/loopro,zrevokefs-fuseflatpakr  r  )r   rU   r   statvfsr   f_frsizef_blocksf_bfree)rF   rC   mountsrX   fs_specfs_file_fs_vfstype
fs_mntopts_restresfrsizetotals               r,   rG   MountSampler.sample  s    .!V7c>DHJJLA+E g%$*2B2B32G*G"g-)w2F**W-C -27&w/16#++9M1M%g.+  "!"  # "!s0   ACB72<C7
CCCC
Cr5   ra   r5   r>   r,   r  r    s;    -)tL,dKL
Ng N$ Nr>   r  c                   J    \ rS rSr\" SSSSS9\" SSSSS9/rS\S	S
4S jrSrg
)BlockSampleri  block.device.readrf   rN   TrO   block.device.writtenrC   r   Nc                     [        S5       nU HQ  nUR                  5       R                  5       t
  pE  pF    pGn[        U5      S-  US   U'   [        U5      S-  US   U'   MS     S S S 5        g ! , (       d  f       g = f)Nr   r   r#  r$  )r   ru   rU   r%   )rF   rC   r   rX   r   r   sectors_readsectors_writtens           r,   rG   BlockSampler.sample  s    #$	!UYU_U_UaUgUgUiRAAQ1PQ9<\9JS9P+,X6<?<PSV<V./9 " %$$r
  r5   ra   r5   r>   r,   r"  r"    s>    -w	TR0'9PTUL
Wg W$ Wr>   r"  )Nr>   )'r   loggingr   r   typingr   r   r   r   r   r   r	   cockpit._vendor.systemd_ctypesr
   sysconfsysconf_namesUSER_HZrV   r   r:   rI   	getLoggerr6   r    r%   rf   r-   r/   r@   rK   rc   r|   r   r   r   r  r  r"  SAMPLERSr5   r>   r,   <module>r1     sa  $   	 	 P P P 1
**R%%l3
47Q;wS9
 c3h
			8	$#  x} RW bjknbo <
 " "M MDVG V$JIG JIZ/<' /<d7OG 7Ot/N7 /NdHW H(N7 N@W7 W" 
r>   