ó
    F\h?  ã                   ó€   • S SK r S SKrS SKrS SKrS SKrS SKrSrS\R                  " \S-  5      -  rSr	 " S S5      r
g)é    Né   é<   é   c                   óü   • \ rS rSrSrS r\R                  \R                  4S jr
\R                  \R                  \R                  4S jrSS jr\R                  \R$                  \R                  4S jrS rS	rg
)ÚWindowsLoadTrackeré   zÎ
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                 ó@  • S U l         S U l        [        R                  " [        R                  5        / U l        S U l        [        R                  " S SSS 5      U l         [        R                  " S SSS 5      U l        [        R                  " U R                  S0 5        g )NTF© )Ú_runningÚ_stoppedÚwinregÚQueryInfoKeyÚHKEY_PERFORMANCE_DATAÚ_valuesÚ_loadÚ_overlappedÚCreateEventÚ_threadÚstart_new_threadÚ_update_load©Úselfs    Ú1/usr/lib/python3.13/test/libregrtest/win_utils.pyÚ__init__ÚWindowsLoadTracker.__init__   s|   € àˆŒØˆŒô 	×ÒœF×8Ñ8Ô9àˆŒØˆŒ
Ü#×/Ò/°°d¸EÀ4ÓHˆŒÜ#×/Ò/°°d¸EÀ4ÓHˆŒä× Ò  ×!2Ñ!2°B¸Õ;ó    c                 ó¬   • U" U R                   S5      (       a*  U R                  5         U" U R                   S5      (       a  M*  U" U R                  5        g )Niè  )r   Ú_calculate_loadr   )r   Ú_waitÚ_signals      r   r   ÚWindowsLoadTracker._update_load*   sB   € ñ
 �D—M‘M 4×(Ñ(Ø× Ñ Ô"ñ �D—M‘M 4×(Ó(ñ 	�—‘Õr   c                 óö  • U" US5      u  pEU" SUS5      u  nU" SXF5      u  pxXg-   n	Xh-   n
X©:  a-  U" SXJ5      u  p¼nX«-  n
US:X  a  X�-   nU" SXN5      u  nOX©:  a  M-  g U R                   b&  U R                   [        -  US[        -
  -  -   U l         g [        U R                  5      [        :  a  U R                  R                  U5        g [        U R                  5      [        U R                  5      -  U l         g )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   Ú"WindowsLoadTracker._calculate_load4   s  € ñ ˜ Ó$‰ˆñ ˜S $¨Ó+‰
ˆ	ñ ")¨°Ó!AÑˆ
ØÑ*ˆ	ØÑ*ˆ	àÓ#ñ !(¨°$Ó BÑˆD�vØÑˆIØ�b‹yØ!*Ñ!3�á*1°#°tÓ*LÑ'Ð&Øð Õ#ð ð �:‰:Ñ!ØŸ*™*¤}Ñ4Ø4¸¼}Ñ9LÑMñNˆD�Jä�—‘Ó¤Ó'Ø�L‰L×ÑÐ 6Õ7ä˜TŸ\™\Ó*¬S°·±Ó->Ñ>ˆD�Jr   c                 ó$   • U R                  5         g ©N)Ú__del__)r   Úkills     r   ÚcloseÚWindowsLoadTracker.closel   s   € Ø�‰ŒØr   c                 óÎ   • U R                   bX  U" U R                   5        U" U R                  S5        U" U R                   5        U" U R                  5        S =U l         U l        g g )Néÿÿÿÿ)r   r   )r   r   Ú_closer    s       r   r@   ÚWindowsLoadTracker.__del__p   sS   € ð
 �=‰=Ñ$á�D—M‘MÔ"á�$—-‘- Ô$á�4—=‘=Ô!Ù�4—=‘=Ô!Ø,0Ð0ˆDŒM˜D�Mð %r   c                 ó   • U R                   $ r?   )r   r   s    r   Ú
getloadavgÚWindowsLoadTracker.getloadavg   s   € Ø�z‰zÐr   )r   r   r   r   N)T)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú_winapiÚWaitForSingleObjectr   ÚSetEventr   r   ÚQueryValueExr   ÚstructÚunpack_fromr   rB   ÚCloseHandler@   rI   Ú__static_attributes__r
   r   r   r   r      st   † ñò<ð$ #×6Ñ6Ø(×1Ñ1ôð  &×2Ñ2Ø$×:Ñ:Ø &× 2Ñ 2ô	6?ôpð ×1Ñ1Ø×*Ñ*Ø#×,Ñ,ô	1õr   r   )r   r   rP   ÚmathrT   r   ÚSAMPLING_INTERVALÚexpr)   r+   r   r
   r   r   Ú<module>r[      sM   ðÛ Û Û Û Û Û ð Ð ð �D—H’HÐ.°Ñ3Ó4Ñ4€ð 
€÷mò mr   