§
    ç·jË  ã                   ó„   — d dl Z d dlZd dlZd dlZd dlZd dlZdZd ej        edz  ¦  «        z  ZdZ	 G d„ d¦  «        Z
dS )é    Né   é<   é   c                   óž   — e Zd ZdZd„ Zej        ej        fd„Z	e
j        e
j        ej        fd„Zd
d„Zej        ej        ej        fd„Zd„ Zd	S )ÚWindowsLoadTrackerzÞ
    This class asynchronously reads the performance counters to calculate
    the system load on Windows.  A "raw" thread is used here to prevent
    interference with the test suite's cases for the threading module.
    c                 ó  — t          j        t           j        ¦  «         g | _        d | _        t          j        d ddd ¦  «        | _        t          j        d ddd ¦  «        | _        t          j
        | j        di ¦  «         d S )NTF© )ÚwinregÚQueryInfoKeyÚHKEY_PERFORMANCE_DATAÚ_valuesÚ_loadÚ_overlappedÚCreateEventÚ_runningÚ_stoppedÚ_threadÚstart_new_threadÚ_update_load©Úselfs    ú1/usr/lib/python3.11/test/libregrtest/win_utils.pyÚ__init__zWindowsLoadTracker.__init__   st   € õ 	Ô�FÔ8Ñ9Ô9Ð9àˆŒØˆŒ
Ý#Ô/°°d¸EÀ4ÑHÔHˆŒÝ#Ô/°°d¸EÀ4ÑHÔHˆŒåÔ  Ô!2°B¸Ñ;Ô;Ð;Ð;Ð;ó    c                 ó’   —  || j         d¦  «        r%|                      ¦   «           || j         d¦  «        °% || j        ¦  «         d S )Niè  )r   Ú_calculate_loadr   )r   Ú_waitÚ_signals      r   r   zWindowsLoadTracker._update_load&   s^   € ð
 ˆe�D”M 4Ñ(Ô(ð 	#Ø× Ò Ñ"Ô"Ð"ð ˆe�D”M 4Ñ(Ô(ð 	#ð 	ˆ�”ÑÔÐÐÐr   c                 ó  —  ||d¦  «        \  }} |d|d¦  «        \  } |d||¦  «        \  }}||z   }	||z   }
|
|	k     r7 |d||
¦  «        \  }}}|
|z  }
|dk    r|	|z   } |d||¦  «        \  }n|
|	k     °7d S | j         �$| j         t          z  |dt          z
  z  z   | _         d S t          | j        ¦  «        t          k     r| j                             |¦  «         d S t          | j        ¦  «        t          | j        ¦  «        z  | _         d S )NÚ2ÚLé   Ú4xLLÚLL28xLé,   g      ð?)r   ÚLOAD_FACTOR_1Úlenr   ÚNVALUEÚappendÚsum)r   Ú_queryÚ_hkeyÚ_unpackÚdataÚ_Ú	obj_startÚ
data_startÚ
defn_startÚ	data_baseÚ	defn_baseÚsizeÚidxÚoffsetÚcounter_offsetÚprocessor_queue_lengths                   r   r   z"WindowsLoadTracker._calculate_load0   sU  € ð �&˜ Ñ$Ô$‰ˆˆað �W˜S $¨Ñ+Ô+‰
ˆ	ð ") ¨°°yÑ!AÔ!AÑˆ
�JØ 
Ñ*ˆ	Ø 
Ñ*ˆ	à˜)Ò#Ð#ð !( ¨°$¸	Ñ BÔ BÑˆD�#�vØ˜ÑˆIØ�bŠyˆyØ!*¨VÑ!3�à*1¨'°#°t¸^Ñ*LÔ*LÑ'Ð&Øð ˜)Ò#Ð#ð ˆFð Œ:Ð!Øœ*¥}Ñ4Ø4¸½}Ñ9LÑMñNˆDŒJˆJˆJå�”ÑÔ¥Ò'Ð'ØŒL×ÒÐ 6Ñ7Ô7Ð7Ð7Ð7å˜Tœ\Ñ*Ô*­S°´Ñ->Ô->Ñ>ˆDŒJˆJˆJr   Tc                 ó.   — |                       ¦   «          d S ©N)Ú__del__)r   Úkills     r   ÚclosezWindowsLoadTracker.closeh   s   € Ø�Š‰ŒˆØˆr   c                 ó¶   — | j         �Q || j         ¦  «          || j        d¦  «          || j         ¦  «          || j        ¦  «         d x| _         | _        d S d S )Néÿÿÿÿ)r   r   )r   r   Ú_closer   s       r   r<   zWindowsLoadTracker.__del__l   sp   € ð
 Œ=Ð$àˆG�D”MÑ"Ô"Ð"àˆE�$”- Ñ$Ô$Ð$àˆF�4”=Ñ!Ô!Ð!ØˆF�4”=Ñ!Ô!Ð!Ø,0Ð0ˆDŒM˜DœM˜M˜Mð %Ð$r   c                 ó   — | j         S r;   )r   r   s    r   Ú
getloadavgzWindowsLoadTracker.getloadavg{   s
   € ØŒzÐr   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   Ú_winapiÚWaitForSingleObjectr   ÚSetEventr   r
   ÚQueryValueExr   ÚstructÚunpack_fromr   r>   ÚCloseHandler<   rC   r	   r   r   r   r      sÃ   € € € € € ðð ð
<ð 
<ð 
<ð #Ô6Ø(Ô1ðð ð ð ð  &Ô2Ø$Ô:Ø &Ô 2ð	6?ð 6?ð 6?ð 6?ðpð ð ð ð Ô1ØÔ*Ø#Ô,ð	1ð 1ð 1ð 1ðð ð ð ð r   r   )r   r   rH   ÚmathrL   r
   ÚSAMPLING_INTERVALÚexpr&   r(   r   r	   r   r   ú<module>rR      s§   ðØ Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø €€€Ø €€€ð Ð ð �H�D”HÐ.°Ñ3Ñ4Ô4Ñ4€ð 
€ðið ið ið ið iñ iô ið ið ið ir   