Ë
    òT•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
y)é    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y)
Ú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                 ó8  — d | _         d | _        t        j                  t        j                  «       g | _        d | _        t        j                  d ddd «      | _         t        j                  d ddd «      | _        t        j                  | j                  di «       y )NTF© )Ú_runningÚ_stoppedÚwinregÚQueryInfoKeyÚHKEY_PERFORMANCE_DATAÚ_valuesÚ_loadÚ_overlappedÚCreateEventÚ_threadÚstart_new_threadÚ_update_load©Úselfs    ú1/usr/lib/python3.12/test/libregrtest/win_utils.pyÚ__init__zWindowsLoadTracker.__init__   s|   € àˆŒØˆŒô 	×ÑœF×8Ñ8Ô9àˆŒØˆŒ
Ü#×/Ñ/°°d¸EÀ4ÓHˆŒÜ#×/Ñ/°°d¸EÀ4ÓHˆŒä× Ñ  ×!2Ñ!2°B¸Õ;ó    c                 ó–   —  || j                   d«      r$| j                  «         || j                   d«      rŒ$ || j                  «       y )Niè  )r
   Ú_calculate_loadr   )r   Ú_waitÚ_signals      r   r   zWindowsLoadTracker._update_load*   s<   € ñ
 �D—M‘M 4Ô(Ø× Ñ Ô"ñ �D—M‘M 4Õ(ñ 	�—‘Õr   c                 ó  —  ||d«      \  }} |d|d«      \  } |d||«      \  }}||z   }	||z   }
|
|	k  r0 |d||
«      \  }}}|
|z  }
|dk(  r|	|z   } |d||«      \  }n|
|	k  rŒ0y | j                   �&| j                   t        z  |dt        z
  z  z   | _         y t        | j                  «      t        k  r| j                  j                  |«       y t        | j                  «      t        | j                  «      z  | _         y )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_load4   s  € ñ ˜ Ó$‰ˆˆañ ˜S $¨Ó+‰
ˆ	ñ ")¨°°yÓ!AÑˆ
�JØ 
Ñ*ˆ	Ø 
Ñ*ˆ	à˜)Ò#ñ !(¨°$¸	Ó BÑˆD�#�vØ˜ÑˆIØ�bŠyØ!*¨VÑ!3�á*1°#°t¸^Ó*LÑ'Ð&Øð ˜)Ó#ð ð �:‰:Ð!ØŸ*™*¤}Ñ4Ø4¸¼}Ñ9LÑMñNˆD�Jä�—‘Ó¤Ò'Ø�L‰L×ÑÐ 6Õ7ä˜TŸ\™\Ó*¬S°·±Ó->Ñ>ˆD�Jr   c                 ó$   — | j                  «        y ©N)Ú__del__)r   Úkills     r   ÚclosezWindowsLoadTracker.closel   s   € Ø�‰ŒØr   c                 óÌ   — | j                   �X || j                   «        || j                  d«        || j                   «        || j                  «       d x| _         | _        y y )Néÿÿÿÿ)r
   r   )r   r   Ú_closer   s       r   r<   zWindowsLoadTracker.__del__p   sS   € ð
 �=‰=Ð$á�D—M‘MÔ"á�$—-‘- Ô$á�4—=‘=Ô!Ù�4—=‘=Ô!Ø,0Ð0ˆDŒM˜D�Mð %r   c                 ó   — | j                   S r;   )r   r   s    r   Ú
getloadavgzWindowsLoadTracker.getloadavg   s   € Ø�z‰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      st   „ ñò<ð$ #×6Ñ6Ø(×1Ñ1óð  &×2Ñ2Ø$×:Ñ:Ø &× 2Ñ 2ó	6?ópð ×1Ñ1Ø×*Ñ*Ø#×,Ñ,ó	1ór   r   )r   r   rH   ÚmathrL   r   ÚSAMPLING_INTERVALÚexpr&   r(   r   r	   r   r   ú<module>rR      sO   ðÛ Û Û Û Û Û ð Ð ð �H�D—H‘HÐ.°Ñ3Ó4Ñ4€ð 
€÷mò mr   