U
    ˜ËjOr  ã                   @   s  d Z ddlZddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddl
mZ dd	l
mZ dd
l
mZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ ddlmZ g Ze�rPejejej ej!ej"ej#ej$ej%ej&ej'ej(ej)ej*ej+iZ,n~e�r”ejejej"ej#ej$ej%ej-ej'ej&ej'ej ej.ej/ej!iZ,n:e�rÎejejej"ej#ej$ej%ej&ej'ej ej.ej/ej!iZ,ej0ej1ej2ej3ej4ej5ej6ej7ej8ej9ej:ej;ej<ej=ej>ej?ej@ejAejBejCejDejEejFejGiZHe I¡ ZJejKZKeLedƒZMeNddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-d.d/�ZOd0d1„ ZPd2d3„ ZQeLed4ƒ�r¬ejRZRejSZSd5d6„ ZTd7d8„ ZUd9d:„ ZVe�sÐe�rÚd;d<„ ZWnd=d<„ ZWd>d?„ ZXe�rúd@dA„ ZYne�rdBdA„ ZYdbdDdE„ZZej[Z[ej\Z\ej]Z]ej^Z^dFdG„ Z_dHdI„ Z`e�rPdJdK„ ZadLdM„ ZbdNdO„ Zce�r¨z
ecƒ ZdW n6 eek
�rž Zf zedPef›�ƒ dZdW 5 dZf[fX Y nX dQdR„ ZgdSdT„ ZhedUdV„ ƒZidWdX„ Zje�rÔdYdZ„ Zkne�räd[dZ„ ZknejkZkd\d]„ Zlejmd^d_„ ƒZnG d`da„ daƒZodS )cz5FreeBSD, OpenBSD and NetBSD platforms implementation.é    N)Údefaultdict)Ú
namedtuple)ÚElementTreeé   )Ú_common)Ú_ntuples)Ú_psposix)Ú_psutil_bsd)ÚFREEBSD)ÚNETBSD)ÚOPENBSD)ÚAccessDenied)ÚNoSuchProcess)ÚZombieProcess)Ú	conn_tmap)Úconn_to_ntuple)Údebug)Úmemoize)Úmemoize_when_activated)Úusage_percentÚproc_num_threadsé   é   é   é   é   é   é   é	   é
   é   é   é   é   é   é   é   é   é   é   é   é   é   é   )ÚppidÚstatusÚreal_uidÚeffective_uidÚ	saved_uidÚreal_gidÚeffective_gidÚ	saved_gidÚttynrÚcreate_timeÚctx_switches_volÚctx_switches_unvolÚread_io_countÚwrite_io_countÚ	user_timeÚsys_timeÚch_user_timeÚch_sys_timeÚrssÚvmsÚmemtextÚmemdataÚmemstackÚcpunumÚnamec                  C   sè   t  ¡ } trŒ| \}}}}}}tddƒ�N}|D ]B}| d¡rPt| ¡ d ƒd }	q,| d¡r,t| ¡ d ƒd }
q,W 5 Q R X || }|| }n,| \}}}}}}}	}
|| | }|| | }t|| |dd�}t 	||||||||	||
|¡S )Nz/proc/meminfoÚrbs   Buffers:r   i   s
   MemShared:©Zround_)
ÚcextZvirtual_memr   ÚopenÚ
startswithÚintÚsplitr   ÚntpZsvmem)ZmemÚtotalÚfreeÚactiveZinactiveZwiredÚcachedÚfÚlineÚbuffersZsharedÚusedZavailÚpercent© rX   ú1/tmp/pip-unpacked-wheel-3no1_rt3/psutil/_psbsd.pyÚvirtual_memoryˆ   s8    

 
õrZ   c                  C   s4   t  ¡ \} }}}}t|| dd�}t | |||||¡S )z@System swap memory as (total, used, free, sin, sout) namedtuple.r   rH   )rI   Zswap_memr   rN   Zsswap)rO   rV   rP   ÚsinZsoutrW   rX   rX   rY   Úswap_memory·   s    r\   Ú	heap_infoc                  C   s$   t  ¡ \} }}}}t | ||||¡S )z,Return system per-CPU times as a namedtuple.)rI   Ú	cpu_timesrN   Ú	scputimes)ÚuserÚniceÚsystemÚidleÚirqrX   rX   rY   r^   É   s    r^   c                  C   s@   g } t  ¡ D ].}|\}}}}}t |||||¡}|  |¡ q| S )z(Return system CPU times as a namedtuple.)rI   Úper_cpu_timesrN   r_   Úappend)ÚretZcpu_tr`   ra   rb   rc   rd   ÚitemrX   rX   rY   re   Ï   s    re   c                   C   s   t  ¡ S )z0Return the number of logical CPUs in the system.)rI   Úcpu_count_logicalrX   rX   rX   rY   ri   Ù   s    ri   c                   C   s   t ƒ dkrdS d S )Nr   )ri   rX   rX   rX   rY   Úcpu_count_coresà   s    rj   c                  C   sx   d} t  ¡ }|dk	rb| d¡}|dkrb|d|d … }t |¡}zt| d¡ƒpRd} W 5 | ¡  X | sttƒ dkrtdS | S )z-Return the number of CPU cores in the system.Nz	</groups>éÿÿÿÿr   zgroup/children/group/cpur   )	rI   Zcpu_topologyÚrfindr   Ú
fromstringÚclearÚlenÚfindallri   )rg   ÚsÚindexÚrootrX   rX   rY   rj   æ   s    



c            	   	   C   s˜   t rt ¡ \} }}}}nptrnt ¡ \} }}}}}}tddƒ�*}|D ]}| d¡rBt| ¡ d ƒ}qBW 5 Q R X ntrˆt ¡ \} }}}}}}t	 
| |||¡S )z*Return various CPU stats as a named tuple.z
/proc/statrG   s   intrr   )r
   rI   Ú	cpu_statsr   rJ   rK   rL   rM   r   rN   Z	scpustats)	ZctxswZintrsZ
soft_intrsZsyscallsZ_trapsZ_faultsZ_forksrS   rT   rX   rX   rY   rt     s    ÿ
ÿrt   c               
   C   sÜ   g } t ƒ }t|ƒD ]Ä}zt |¡\}}W n tk
r@   Y qY nX |rÂz t| d¡d  d¡d ƒ}W n ttfk
r‚   d}Y nX z t| d¡d  d¡d ƒ}W n ttfk
rÀ   d}Y nX |  	t
 |||¡¡ q| S )zªReturn frequency metrics for CPUs. As of Dec 2018 only
        CPU 0 appears to be supported by FreeBSD and all other cores
        match the frequency of CPU 0.
        ú rk   ú/r   N)ri   ÚrangerI   Úcpu_freqÚNotImplementedErrorrL   rM   Ú
IndexErrorÚ
ValueErrorrf   rN   Úscpufreq)rg   Únum_cpusÚcpuÚcurrentZavailable_freqZmin_freqZmax_freqrX   rX   rY   rx   #  s$    
 
 
rx   c                  C   s   t t ¡ ƒ} t | dd¡gS )Ng        )ÚfloatrI   rx   rN   r|   )ÚcurrrX   rX   rY   rx   =  s    Fc           	      C   s@   g }t  ¡ }|D ]*}|\}}}}t ||||¡}| |¡ q|S )z•Return mounted disk partitions as a list of namedtuples.
    'all' argument is ignored, see:
    https://github.com/giampaolo/psutil/issues/906.
    )rI   Údisk_partitionsrN   Z	sdiskpartrf   )	ÚallÚretlistZ
partitionsÚ	partitionZdeviceZ
mountpointZfstypeÚoptsÚntuplerX   rX   rY   r‚   G  s    r‚   c            
      C   s°   t ƒ  ¡ } i }| D ]˜}z&t |¡}t |¡}t |¡\}}W n0 tk
rl } z|jtjkr\‚ W 5 d}~X Y qX t	t
dƒr‚t
 |¡}d |¡}d|k}	t |	||||¡||< q|S )z)Get NIC stats (isup, duplex, speed, mtu).NÚ	NicDuplexú,Zrunning)Únet_io_countersÚkeysrI   Z
net_if_mtuZnet_if_flagsZnet_if_duplex_speedÚOSErrorÚerrnoZENODEVÚhasattrr   rˆ   ÚjoinrN   Z	snicstats)
Únamesrg   rF   ZmtuÚflagsZduplexÚspeedÚerrZoutput_flagsZisuprX   rX   rY   Únet_if_statsb  s     





r”   c              
   C   sˆ   t |  \}}tƒ }tr&t d||¡}ntr8t d| ¡}nt ||¡}|D ]6}|\}}}}	}
}}t||||	|
|t|ƒ}| |¡ qHt	|ƒS )z System-wide network connections.rk   )
r   Úsetr   rI   Únet_connectionsr   r   ÚTCP_STATUSESÚaddÚlist)ÚkindÚfamiliesÚtypesrg   Úrawlistrh   ÚfdÚfamÚtypeÚladdrÚraddrr/   ÚpidÚntrX   rX   rY   r–   x  s*           ÿr–   c                  C   sd   zt  ¡ \} }}W n tk
r(   Y dS X |dk}|r>tj}n|dkrNtj}n|d }t | ||¡S )zReturn battery info.Nr   rk   é<   )rI   Úsensors_batteryry   r   ZPOWER_TIME_UNLIMITEDZPOWER_TIME_UNKNOWNrN   Zsbattery)rW   ZminsleftZpower_pluggedZsecsleftrX   rX   rY   r¦   “  s    r¦   c               	   C   sx   t tƒ} tƒ }t|ƒD ]\}zBt |¡\}}|dkr6d}d|› �}| d  t ||||¡¡ W q t	k
rp   Y qX q| S )z?Return CPU cores temperatures if available, else an empty dict.r   NzCore Zcoretemp)
r   r™   ri   rw   rI   Zsensors_cpu_temperaturerf   rN   Zshwtempry   )rg   r}   r~   r   ÚhighrF   rX   rX   rY   Úsensors_temperatures£  s    
r¨   c                   C   s   t  ¡ S )z:The system boot time expressed in seconds since the epoch.)rI   Ú	boot_timerX   rX   rX   rY   r©   ¹  s    r©   zignoring exception on import: c                 C   sN   t dkr| S t tƒ  }|dks*t|ƒdk r.| S tdƒ |dk rF| | S | | S )z!Account for system clock updates.r   r   z9system clock was updated; adjusting process create_time())ÚINIT_BOOT_TIMEr©   Úabsr   )ÚctimeZdiffrX   rX   rY   Úadjust_proc_create_timeÇ  s    
r­   c            	      C   sR   g } t  ¡ }|D ]<}|\}}}}}|dkr,qt ||p8d|||¡}|  |¡ q| S )z:Return currently connected users as a list of namedtuples.ú~N)rI   ÚusersrN   Zsuserrf   )	r„   r�   rh   r`   ÚttyÚhostnameZtstampr£   r¤   rX   rX   rY   r¯   Ö  s    r¯   c                   C   sD   zt dƒ ¡  W n* tk
r&   Y dS  tk
r:   Y dS X dS d S )Nr   FT)ÚProcessrF   r   r   rX   rX   rX   rY   Ú_pid_0_existsè  s    r³   c                  C   s*   t  ¡ } tr&d| kr&tƒ r&|  dd¡ | S )z7Returns a list of PIDs currently running on the system.r   )rI   Úpidsr   r³   Úinsert)rg   rX   rX   rY   r´   ô  s    r´   c                 C   s    t  | ¡}|s| tƒ kS dS d S )NT©r   Ú
pid_existsr´   ©r£   ÚexistsrX   rX   rY   r·      s    

r·   c                 C   s    t  | ¡}|sdS | tƒ kS d S )NFr¶   r¸   rX   rX   rY   r·     s    
c                    s   t  ˆ ¡‡ fdd„ƒ}|S )z`Decorator which translates bare OSError exceptions into
    NoSuchProcess and AccessDenied.
    c              
      s  | j | j| j  }}}zˆ | f|ž|ŽW S  tk
rn } z(t |¡rRt|||ƒ|‚t||ƒ|‚W 5 d }~X Y n¤ tk
rš } zt	||ƒ|‚W 5 d }~X Y nx tj
k
rÊ } zt|||ƒ|‚W 5 d }~X Y nH tk
�r } z(|dkrúdtƒ krút	||ƒ|‚|d ‚W 5 d }~X Y nX d S )Nr   )r£   Ú_ppidÚ_nameÚProcessLookupErrorrI   Úproc_is_zombier   r   ÚPermissionErrorr   ZZombieProcessErrorrŒ   r´   )ÚselfÚargsÚkwargsr£   r.   rF   r“   ©ÚfunrX   rY   Úwrapper  s    
z wrap_exceptions.<locals>.wrapper)Ú	functoolsÚwraps)rÃ   rÄ   rX   rÂ   rY   Úwrap_exceptions  s    rÇ   c              
   c   s    | j | j| j  }}}z
dV  W nz ttfk
rn } z,t | j ¡rRt|||ƒ|‚nt||ƒ|‚W 5 d}~X Y n. t	k
rš } zt
||ƒ|‚W 5 d}~X Y nX dS )z8Same as above, for routines relying on reading /proc fs.N)r£   r»   rº   r¼   ÚFileNotFoundErrorrI   r½   r   r   r¾   r   )Úinstr£   rF   r.   r“   rX   rX   rY   Úwrap_exceptions_procfs3  s    
rÊ   c                   @   sÆ  e Zd ZdZddddgZdd„ Zdd	„ Zeed
d„ ƒƒZ	dd„ Z
dd„ Zedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZedd„ ƒZed d!„ ƒZerÄed"d#„ ƒZed$d%„ ƒZeZedNd'd(„ƒZed)d*„ ƒZed+d,„ ƒZed-d.„ ƒZedOd0d1„ƒZedPd3d4„ƒZed5d6„ ƒZed7d8„ ƒZ ed9d:„ ƒZ!ed;d<„ ƒZ"ed=d>„ ƒZ#e$d?d@ƒZ%e$d?dAƒZ&edBdC„ ƒZ'edDdE„ ƒZ(e�rÂedFdG„ ƒZ)edHdI„ ƒZ*edJdK„ ƒZ+edQdLdM„ƒZ,d2S )Rr²   z1Wrapper class around underlying C implementation.Ú_cacher»   rº   r£   c                 C   s   || _ d | _d | _d S ©N)r£   r»   rº   )r¿   r£   rX   rX   rY   Ú__init__J  s    zProcess.__init__c                 C   s   t  | j¡ dS )z+Raise NSP if the process disappeared on us.N)rI   Ú	proc_namer£   ©r¿   rX   rX   rY   Ú_assert_aliveO  s    zProcess._assert_alivec                 C   s$   t  | j¡}t|ƒttƒks t‚|S )z;Retrieves multiple process info in one shot as a raw tuple.)rI   Zproc_oneshot_infor£   ro   Úkinfo_proc_mapÚAssertionError©r¿   rg   rX   rX   rY   ÚoneshotU  s    zProcess.oneshotc                 C   s   | j  | ¡ d S rÌ   )rÔ   Zcache_activaterÏ   rX   rX   rY   Úoneshot_enter]  s    zProcess.oneshot_enterc                 C   s   | j  | ¡ d S rÌ   )rÔ   Zcache_deactivaterÏ   rX   rX   rY   Úoneshot_exit`  s    zProcess.oneshot_exitc                 C   s(   |   ¡ td  }|d k	r|S t | j¡S )NrF   )rÔ   rÑ   rI   rÎ   r£   )r¿   rF   rX   rX   rY   rF   c  s    zProcess.namec              
   C   s�   t r| jdkrdS t | j¡S trb| jdkr0dS t| ƒ�" t d| j› d�¡W  5 Q R £ S Q R X n*dd l}|  	¡ }|rˆ| 
|d ¡p†dS dS d S )Nr   Ú z/proc/z/exe)r
   r£   rI   Zproc_exer   rÊ   ÚosÚreadlinkÚshutilÚcmdlineÚwhich)r¿   rÚ   rÛ   rX   rX   rY   Úexeh  s    


(zProcess.exec              
   C   sÌ   t r| jdkrg S tr¼zt | j¡W S  tk
r¸ } zv|jtjkr¦| j| j| j	  }}}t 
| j¡rrt|||ƒ|‚t| jƒsŠt|||ƒ|‚td|›d�ƒ g  W Y ¢S ‚ W 5 d }~X Y qÈX nt | j¡S d S )Nr   z	ignoring z and returning an empty list)r   r£   r   rI   Zproc_cmdlinerŒ   r�   ÚEINVALr»   rº   r½   r   r·   r   r   )r¿   r“   r£   rF   r.   rX   rX   rY   rÛ   ‚  s     
zProcess.cmdlinec                 C   s   t  | j¡S rÌ   )rI   Zproc_environr£   rÏ   rX   rX   rY   Úenviron�  s    zProcess.environc                 C   s>   |   ¡ td  }t ¡ }z
|| W S  tk
r8   Y d S X d S )Nr6   )rÔ   rÑ   r   Zget_terminal_mapÚKeyError)r¿   Ztty_nrZtmaprX   rX   rY   Úterminal¡  s    
zProcess.terminalc                 C   s   |   ¡ td  | _| jS )Nr.   )rÔ   rÑ   rº   rÏ   rX   rX   rY   r.   ª  s    zProcess.ppidc                 C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr0   r1   r2   )rÔ   rN   ZpuidsrÑ   ©r¿   ZrawtuplerX   rX   rY   Úuids¯  s    


ýzProcess.uidsc                 C   s.   |   ¡ }t |td  |td  |td  ¡S )Nr3   r4   r5   )rÔ   rN   ZpgidsrÑ   râ   rX   rX   rY   Úgids¸  s    


ýzProcess.gidsc                 C   s8   |   ¡ }t |td  |td  |td  |td  ¡S )Nr<   r=   r>   r?   )rÔ   rN   Z	pcputimesrÑ   râ   rX   rX   rY   r^   Á  s    



üzProcess.cpu_timesc                 C   s   |   ¡ td  S )NrE   )rÔ   rÑ   rÏ   rX   rX   rY   Úcpu_numÍ  s    zProcess.cpu_numc              	   C   sB   |   ¡ }t |td  |td  |td  |td  |td  ¡S )Nr@   rA   rB   rC   rD   )rÔ   rN   ZpmemrÑ   râ   rX   rX   rY   Úmemory_infoÑ  s    




ûzProcess.memory_infoFc                 C   s$   |   ¡ td  }tr |s t|ƒ}|S )Nr7   )rÔ   rÑ   r   r­   )r¿   Ú	monotonicr¬   rX   rX   rY   r7   Þ  s    zProcess.create_timec                 C   s    t rt | j¡S t|  ¡ ƒS d S rÌ   )ÚHAS_PROC_NUM_THREADSrI   r   r£   ro   ÚthreadsrÏ   rX   rX   rY   Únum_threadsæ  s    zProcess.num_threadsc                 C   s$   |   ¡ }t |td  |td  ¡S )Nr8   r9   )rÔ   rN   ZpctxswrÑ   râ   rX   rX   rY   Únum_ctx_switchesî  s
    

þzProcess.num_ctx_switchesc                 C   sH   t  | j¡}g }|D ]"\}}}t |||¡}| |¡ qtrD|  ¡  |S rÌ   )rI   Zproc_threadsr£   rN   Zpthreadrf   r   rÐ   )r¿   r�   r„   Z	thread_idÚutimeZstimer‡   rX   rX   rY   ré   ö  s    zProcess.threadsÚinetc              	   C   s¬   t | \}}g }tr$t | j|¡}n&tr:t | j||¡}nt | j||¡}|D ]P}|d d… \}}}	}
}}tr€||ksN|	|kr€qNt|||	|
||t	ƒ}| 
|¡ qN|  ¡  |S )Nr   )r   r   rI   r–   r£   r   Zproc_net_connectionsr
   r   r—   rf   rÐ   )r¿   rš   r›   rœ   rg   r�   rh   rž   rŸ   r    r¡   r¢   r/   r¤   rX   rX   rY   r–     s0          ÿzProcess.net_connectionsNc                 C   s   t  | j|¡S rÌ   )r   Zwait_pidr£   )r¿   ÚtimeoutrX   rX   rY   Úwait  s    zProcess.waitc                 C   s   t  | j¡S rÌ   )rI   Zproc_priority_getr£   rÏ   rX   rX   rY   Únice_get  s    zProcess.nice_getc                 C   s   t  | j|¡S rÌ   )rI   Zproc_priority_setr£   )r¿   ÚvaluerX   rX   rY   Únice_set#  s    zProcess.nice_setc                 C   s   |   ¡ td  }t |d¡S )Nr/   ú?)rÔ   rÑ   ÚPROC_STATUSESÚget)r¿   ÚcoderX   rX   rY   r/   '  s    zProcess.statusc                 C   s(   |   ¡ }t |td  |td  dd¡S )Nr:   r;   rk   )rÔ   rN   ZpiorÑ   râ   rX   rX   rY   Úio_counters-  s    

üzProcess.io_countersc                 C   s   t r| jdkrdS t | j¡S )z)Return process current working directory.r   r×   )r   r£   rI   Zproc_cwdrÏ   rX   rX   rY   Úcwd7  s    zProcess.cwdZmmapz*path rss, private, ref_count, shadow_countz6addr, perms path rss, private, ref_count, shadow_countc                 C   s   t  | j¡}dd„ |D ƒS )z8Return files opened by process as a list of namedtuples.c                 S   s   g | ]\}}t  ||¡‘qS rX   )rN   Z	popenfile)Ú.0Úpathrž   rX   rX   rY   Ú
<listcomp>K  s     z&Process.open_files.<locals>.<listcomp>)rI   Zproc_open_filesr£   )r¿   r�   rX   rX   rY   Ú
open_filesG  s    zProcess.open_filesc                 C   s   t  | j¡}tr|  ¡  |S )z=Return the number of file descriptors opened by this process.)rI   Zproc_num_fdsr£   r   rÐ   rÓ   rX   rX   rY   Únum_fdsM  s    zProcess.num_fdsc                 C   s   t  | j¡S rÌ   )rI   Zproc_cpu_affinity_getr£   rÏ   rX   rX   rY   Úcpu_affinity_getY  s    zProcess.cpu_affinity_getc              
   C   sº   t tttƒ ƒƒƒ}|D ]&}||krd|›d|› d�}t|ƒ‚qzt | j|¡ W nd tk
r´ } zF|j	t	j
t	jhkr¢|D ](}||krxd|›d|› d�}t|ƒ|‚qx‚ W 5 d }~X Y nX d S )Nzinvalid CPU z (choose between ú))r•   rw   ro   re   r{   rI   Zproc_cpu_affinity_setr£   rŒ   r�   rÞ   ZEDEADLK)r¿   ZcpusZallcpusr~   Úmsgr“   rX   rX   rY   Úcpu_affinity_set]  s    
ÿzProcess.cpu_affinity_setc                 C   s   t  | j¡S rÌ   )rI   Zproc_memory_mapsr£   rÏ   rX   rX   rY   Úmemory_mapsx  s    zProcess.memory_mapsc                 C   sR   |d krt  | j|¡S t|ƒdkr4d|›�}t|ƒ‚|\}}t  | j|||¡S d S )Nr   z2second argument must be a (soft, hard) tuple, got )rI   Zproc_getrlimitr£   ro   r{   Zproc_setrlimit)r¿   ÚresourceZlimitsr   ZsoftÚhardrX   rX   rY   Úrlimit|  s    ÿzProcess.rlimit)F)rí   )N)N)-Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	__slots__rÍ   rÐ   rÇ   r   rÔ   rÕ   rÖ   rF   rÝ   rÛ   rß   rá   r.   rã   rä   r^   r
   rå   ræ   Zmemory_full_infor7   rê   rë   ré   r–   rï   rð   rò   r/   r÷   rø   r   Znt_mmap_groupedZnt_mmap_extrü   rý   rþ   r  r  r  rX   rX   rX   rY   r²   E  s˜   








	









	
 ÿ ÿ

	


r²   )F)pr	  Ú
contextlibr�   rÅ   rØ   Úcollectionsr   r   Z	xml.etreer   r×   r   r   rN   r   r	   rI   r
   r   r   r   r   r   r   r   r   r   r   r   Z__extra__all__ZSIDLZSTATUS_IDLEZSRUNZSTATUS_RUNNINGZSSLEEPZSTATUS_SLEEPINGZSSTOPZSTATUS_STOPPEDZSZOMBZSTATUS_ZOMBIEZSWAITZSTATUS_WAITINGZSLOCKZSTATUS_LOCKEDrô   ZSDEADZSTATUS_WAKINGZSONPROCZTCPS_ESTABLISHEDZCONN_ESTABLISHEDZTCPS_SYN_SENTZCONN_SYN_SENTZTCPS_SYN_RECEIVEDZCONN_SYN_RECVZTCPS_FIN_WAIT_1ZCONN_FIN_WAIT1ZTCPS_FIN_WAIT_2ZCONN_FIN_WAIT2ZTCPS_TIME_WAITZCONN_TIME_WAITZTCPS_CLOSEDZ
CONN_CLOSEZTCPS_CLOSE_WAITZCONN_CLOSE_WAITZTCPS_LAST_ACKZCONN_LAST_ACKZTCPS_LISTENZCONN_LISTENZTCPS_CLOSINGZCONN_CLOSINGZPSUTIL_CONN_NONEZ	CONN_NONEr—   ZgetpagesizeZPAGESIZEZAF_LINKrŽ   rè   ÚdictrÑ   rZ   r\   r]   Z	heap_trimr^   re   ri   rj   rt   rx   r‚   Ú
disk_usageZdisk_io_countersrŠ   Znet_if_addrsr”   r–   r¦   r¨   r©   rª   Ú	Exceptionr“   r­   r¯   r³   r´   r·   rÇ   ÚcontextmanagerrÊ   r²   rX   rX   rX   rY   Ú<module>   sX         ù	       í      ú
            ô
ç"/

 






	

