
Gq]c           @   s
  d  Z  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 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 g Z e e d  Z  e e d  Z! e e d  Z" e j# d  Z$ e j% Z% i e j& e j' 6e j( e j) 6e j* e j+ 6e j* e j, 6e j- e j. 6Z/ i e j0 e j1 6e j2 e j3 6e j4 e j5 6e j6 e j7 6e j8 e j9 6e j: e j; 6e j< e j= 6e j> e j? 6e j@ e jA 6e jB e jC 6e jD e jE 6e jF e jG 6ZH eI d d d d d d d d d  d! d" d# d$ d% d& d'  ZJ d ZL d ZM d ZN d ZO e	 d( d d g  ZP eP ZQ e	 d) d* d+ d, d- g  ZR e	 d. d/ d0 d1 d2 d3 g  ZS d4   ZT d5   ZU d6   ZV d7   ZW d8   ZX d9   ZY d:   ZZ e j[ Z[ e j\ Z\ e] d;  Z^ e j_ Z_ e! re j` Z` n  d d<  Za d=   Zb d>   Zc d?   Zd d@   Ze dA   Zf dB   Zg dC eh f dD     YZi d S(E   s   AIX platform implementation.iN(   t
   namedtuple(   t   AF_INETi   (   t   _common(   t   _psposix(   t   _psutil_aix(   t   _psutil_posix(   t   AF_INET6(   t   get_procfs_path(   t   memoize_when_activated(   t   NIC_DUPLEX_FULL(   t   NIC_DUPLEX_HALF(   t   NIC_DUPLEX_UNKNOWN(   t   sockfam_to_enum(   t   socktype_to_enum(   t   usage_percent(   t   PY3t   PROCFS_PATHt   proc_threadst   net_io_counterst   proc_io_counterst   SC_PAGE_SIZEt   ppidi    t   rsst   vmsi   t   create_timei   t   nicei   t   num_threadsi   t   statusi   t   ttynri   t   pmemt	   scputimest   usert   systemt   idlet   iowaitt   svmemt   totalt	   availablet   percentt   usedt   freec          C   sJ   t  j   \ }  } } } } t |  | |  d d } t |  | | | |  S(   Nt   round_i   (   t   cextt   virtual_memR   R#   (   R$   t   availR(   t   pinnedt   inuseR&   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   virtual_memoryo   s    c          C   sS   t  j   \ }  } } } |  | } t | |  d d } t j |  | | | | |  S(   s=   Swap system memory as a (total, used, free, sin, sout) tuple.R)   i   (   R*   t   swap_memR   R   t   sswap(   R$   R(   t   sint   soutR'   R&   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   swap_memoryu   s    
c          C   s5   t  j   }  t g  t |    D] } t |  ^ q   S(   s-   Return system-wide CPU times as a named tuple(   R*   t   per_cpu_timesR   t   zipt   sum(   t   rett   x(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt	   cpu_times   s    c          C   s)   t  j   }  g  |  D] } t |   ^ q S(   s5   Return system per-CPU times as a list of named tuples(   R*   R5   R   (   R8   R9   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR5      s    c           C   s*   y t  j d  SWn t k
 r% d SXd S(   s0   Return the number of logical CPUs in the system.t   SC_NPROCESSORS_ONLNN(   t   ost   sysconft
   ValueErrort   None(    (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   cpu_count_logical   s    c          C   s   d }  t  j |  d t d t  j d t  j } | j   \ } } t r| g  | | f D] } | j t j j	  ^ qR \ } } n  | j
 d k r t d |  | f   n  | j   j   } t |  p d  S(   Ns   lsdev -Cc processort   shellt   stdoutt   stderri    s   %r command error
%s(   t
   subprocesst   Popent   Truet   PIPEt   communicateR   t   decodet   sysRB   t   encodingt
   returncodet   RuntimeErrort   stript
   splitlinest   lenR?   (   t   cmdt   pRB   RC   R9   t
   processors(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   cpu_count_physical   s    4c          C   s.   t  j   \ }  } } } t j |  | | |  S(   s*   Return various CPU stats as a named tuple.(   R*   t	   cpu_statsR   t	   scpustats(   t   ctx_switchest
   interruptst   soft_interruptst   syscalls(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyRU      s    c   	      C   s   g  } t  j   } xx | D]p } | \ } } } } | d k rF d } n  |  sd t |  j sd q qd n  t j | | | |  } | j |  q W| S(   s   Return system disk partitions.t   nonet    (   R*   t   disk_partitionst
   disk_usageR$   R   t	   sdiskpartt   append(	   t   allt   retlistt
   partitionst	   partitiont   devicet
   mountpointt   fstypet   optst   ntuple(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR]      s    		c      	   C   s  t  j } |  | k rP t d |  d j g  | D] } t |  ^ q+  f   n  t  j |  \ } } t j |  } t   } x| D]} | \ }	 }
 } } } } } |
 | k r q n  | | k r q n  t | } |
 t	 t
 f k r| r t  j |   } n  | rt  j |   } qn  t |
  }
 t |  } | d k r^t  j |	 |
 | | | | |  } n t  j |	 |
 | | | |  } | j |  q Wt |  S(   s   Return socket connections.  If pid == -1 return system-wide
    connections (as opposed to connections opened by one process only).
    s+   invalid %r kind argument; choose between %ss   , i(   R   t	   conn_tmapR>   t   joint   reprR*   t   net_connectionst   sett   TCP_STATUSESR   R   t   addrR   R   t   sconnt   pconnt   addt   list(   t   kindt   _pidt   cmapR9   t   familiest   typest   rawlistR8   t   itemt   fdt   famt   type_t   laddrt   raddrR   t   pidt   nt(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyRm      s4    	5	
$c          C   st  i t  d 6t d 6}  t g  t   D] } | d ^ q!  } i  } x-| D]%} t j |  \ } } d } d } t j d d | g d t j d t j }	 |	 j	   \ }
 } t
 r g  |
 | f D] } | j t j j  ^ q \ }
 } n  |	 j d k r>t j d	 |
  } | d k	 r>t | j d
   } | j d  } q>n  |  j | t  } t j | | | |  | | <qG W| S(   s)   Get NIC stats (isup, duplex, speed, mtu).t   Fullt   Halfi    R\   s   /usr/bin/entstats   -dRB   RC   s"   Running: (\d+) Mbps.*?(\w+) Duplexi   i   N(   R	   R
   Rn   t   net_if_addrsR*   t   net_if_statsRD   RE   RG   RH   R   RI   RJ   RB   RK   RL   t   ret   searchR?   t   intt   groupt   getR   R   t	   snicstats(   t
   duplex_mapR9   t   namesR8   t   namet   isupt   mtut   duplext   speedRR   RB   RC   t	   re_result(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR      s.    

&4 c           C   s
   t  j   S(   s:   The system boot time expressed in seconds since the epoch.(   R*   t	   boot_time(    (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c          C   s   g  }  t  j   } d } xo | D]g } | \ } } } } } }	 | sI q n  | | k r^ d } n  t j | | | | |	  }
 |  j |
  q W|  S(   s:   Return currently connected users as a list of namedtuples.s   :0.0s   :0t	   localhost(   s   :0.0s   :0(   R*   t   usersR   t   suserR`   (   Rb   Rz   R   R{   R   t   ttyt   hostnamet   tstampt   user_processR   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR      s    	c          C   s5   g  t  j t    D] }  |  j   r t |   ^ q S(   s7   Returns a list of PIDs currently running on the system.(   R<   t   listdirR   t   isdigitR   (   R9   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   pids8  s    c         C   s+   t  j j t  j j t   t |   d   S(   s&   Check for the existence of a unix pid.t   psinfo(   R<   t   patht   existsRk   R   t   str(   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt
   pid_exists=  s    c            s"   t  j      f d    } | S(   s   Call callable into a try/except clause and translate ENOENT,
    EACCES and EPERM in NoSuchProcess or AccessDenied exceptions.
    c            s   y   |  | |  SWn t  k
 r } t d  k sJ t d  k sJ t d  k rP   n  | j t j t j f k r t |  j	  s t |  j	 |  j
   q t |  j	 |  j
 |  j   n  | j t j t j f k r t |  j	 |  j
   n    n Xd  S(   N(   t   EnvironmentErrort   NoSuchProcessR?   t   AccessDeniedt   ZombieProcesst   errnot   ENOENTt   ESRCHR   R   t   _namet   _ppidt   EPERMt   EACCES(   t   selft   argst   kwargst   err(   t   fun(    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   wrapperF  s    (   t	   functoolst   wraps(   R   R   (    (   R   s,   lib/python2.7/site-packages/psutil/_psaix.pyt   wrap_exceptionsB  s    t   Processc           B   s  e  Z d  Z d d d d d g Z d   Z d   Z d   Z e e d	     Z	 e e d
     Z
 e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e r e d    Z n  e d d   Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e d    Z e Z e d    Z d   Z e d    Z  e d     Z! e d# d!   Z# e$ re d"    Z% n  RS($   s1   Wrapper class around underlying C implementation.R   R   R   t   _procfs_patht   _cachec         C   s+   | |  _  d  |  _ d  |  _ t   |  _ d  S(   N(   R   R?   R   R   R   R   (   R   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   __init__b  s    			c         C   s$   |  j  j |   |  j j |   d  S(   N(   t   _proc_basic_infot   cache_activatet
   _proc_cred(   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   oneshot_enterh  s    c         C   s$   |  j  j |   |  j j |   d  S(   N(   R   t   cache_deactivateR   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   oneshot_exitl  s    c         C   s   t  j |  j |  j  S(   N(   R*   t   proc_basic_infoR   R   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR   p  s    c         C   s   t  j |  j |  j  S(   N(   R*   t	   proc_credR   R   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR   u  s    c         C   s2   |  j  d k r d St j |  j  |  j  j d  S(   Ni    t   swappers    (   R   R*   t	   proc_nameR   t   rstrip(   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR   z  s    c         C   s1  |  j    } | s d S| d } t j j | k r t j j |  sn t j j t j j |  j   |   } n  t j j |  r t j j |  r t j	 | t j
  r | St j j |  } n  xj t j d j d  D]R } t j j t j j | |   } t j j |  r t j	 | t j
  r | Sq Wd S(   NR\   i    t   PATHt   :(   t   cmdlineR<   R   t   sept   isabst   abspathRk   t   cwdt   isfilet   accesst   X_OKt   basenamet   environt   split(   R   R   t   exeR   t   possible_exe(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s$    
*!c         C   s   t  j |  j  S(   N(   R*   t	   proc_argsR   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c         C   s   t  j |  j  S(   N(   R*   t   proc_environR   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c         C   s   |  j    t d S(   NR   (   R   t   proc_info_map(   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c         C   s   |  j    t d S(   NR   (   R   R   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c         C   s~   t  j |  j  } g  } x9 | D]1 \ } } } t j | | |  } | j |  q W| sz t j d |  j |  j f  n  | S(   Ns   %s/%s(	   R*   R   R   R   t   pthreadR`   R<   t   statR   (   R   Rz   Rb   t	   thread_idt   utimet   stimeRi   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   threads  s     t   inetc         C   s?   t  | d |  j } | s; t j d |  j |  j f  n  | S(   NRv   s   %s/%s(   Rm   R   R<   R   R   (   R   Ru   R8   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   connections  s     c         C   s   t  j |  j  S(   N(   t
   cext_posixt   getpriorityR   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   nice_get  s    c         C   s   t  j |  j |  S(   N(   R   t   setpriorityR   (   R   t   value(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   nice_set  s    c         C   s   |  j    t d |  _ |  j S(   NR   (   R   R   R   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c         C   s1   |  j    \ } } } } } } t j | | |  S(   N(   R   R   t   puids(   R   t   realt	   effectivet   savedt   _(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   uids  s    c         C   s1   |  j    \ } } } } } } t j | | |  S(   N(   R   R   R   (   R   R   R   R   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   gids  s    c         C   s%   t  j |  j |  j  } t j |   S(   N(   R*   t   proc_cpu_timesR   R   R   t	   pcputimes(   R   R:   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR:     s    c         C   sd   |  j    t d } | d @d ?| d @B} x3 t j d  D]" } t j |  j | k r: | Sq: Wd  S(   NR   I      i   i  s	   /dev/**/*(   R   R   t   globR<   R   t   st_rdevR?   (   R   t   ttydevt   dev(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   terminal  s    c         C   s   |  j  } y- t j d | |  j f  } | j d  SWnF t k
 r~ } | j t j k rx t j d | |  j f  d  S  n Xd  S(   Ns	   %s/%s/cwdt   /s   %s/%s(
   R   R<   t   readlinkR   R   t   OSErrorR   R   R   R?   (   R   t   procfs_patht   resultR   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    	c         C   s=   |  j    } | t d d } | t d d } t | |  S(   NR   i   R   (   R   R   R   (   R   R8   R   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   memory_info  s    c         C   s$   |  j    t d } t j | d  S(   NR   t   ?(   R   R   t   PROC_STATUSESR   (   R   t   code(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR     s    c   	      C   s>  t  j d d t |  j  g d t  j d t  j } | j   \ } } t r g  | | f D] } | j t j	 j
  ^ qX \ } } n  d | j   k r t |  j |  j   n  t j d |  } g  } xs | D]k \ } } | j   } | j d  r | d } n  | j   d	 k rq n  | j t j | t |    q W| S(
   Ns   /usr/bin/procfiless   -nRB   RC   s   no such processs    (\d+): S_IFREG.*\s*.*name:(.*)\ns   //i   s   cannot be retrieved(   RD   RE   R   R   RG   RH   R   RI   RJ   RB   RK   t   lowerR   R   R   t   findallRN   t
   startswithR`   R   t	   popenfileR   (	   R   RR   RB   RC   R9   t	   procfilesRb   R|   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt
   open_files  s$    4#c         C   s6   |  j  d k r d St t j d |  j |  j  f   S(   Ni    s   %s/%s/fd(   R   RP   R<   R   R   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   num_fds#  s    c         C   s   t  j t j |  j    S(   N(   R   t   pctxswR*   t   proc_num_ctx_switchesR   (   R   (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   num_ctx_switches)  s    c         C   s   t  j |  j | |  j  S(   N(   R   t   wait_pidR   R   (   R   t   timeout(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   wait.  s    c         C   sv   y" t  j |  j  \ } } } } Wn; t k
 r_ t |  j  sY t |  j |  j   n    n Xt j | | | |  S(   N(	   R*   R   R   R   R   R   R   R   t   pio(   R   t   rct   wct   rbt   wb(    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   io_counters3  s    "N(&   t   __name__t
   __module__t   __doc__t	   __slots__R   R   R   R   R   R   R   R   R   R   R   R   R   t   HAS_THREADSR   R   R   R   R   R   R   R:   R   R   R   t   memory_full_infoR   R  R  R  R?   R  t   HAS_PROC_IO_COUNTERSR  (    (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyR   ]  sJ   				(j   R  R   R   R   R<   R   RD   RJ   t   collectionsR    t   socketR   R\   R   R   R   R*   R   R   R   R   R   R	   R
   R   R   R   R   t   _compatR   t   __extra__all__t   hasattrR  t   HAS_NET_IO_COUNTERSR  R=   t	   PAGE_SIZEt   AF_LINKt   STATUS_IDLEt   SIDLt   STATUS_ZOMBIEt   SZOMBt   STATUS_RUNNINGt   SACTIVEt   SSWAPt   STATUS_STOPPEDt   SSTOPR   t   CONN_ESTABLISHEDt   TCPS_ESTABLISHEDt   CONN_SYN_SENTt   TCPS_SYN_SENTt   CONN_SYN_RECVt   TCPS_SYN_RCVDt   CONN_FIN_WAIT1t   TCPS_FIN_WAIT_1t   CONN_FIN_WAIT2t   TCPS_FIN_WAIT_2t   CONN_TIME_WAITt   TCPS_TIME_WAITt
   CONN_CLOSEt   TCPS_CLOSEDt   CONN_CLOSE_WAITt   TCPS_CLOSE_WAITt   CONN_LAST_ACKt   TCPS_LAST_ACKt   CONN_LISTENt   TCPS_LISTENt   CONN_CLOSINGt   TCPS_CLOSINGt	   CONN_NONEt   PSUTIL_CONN_NONERo   t   dictR   R?   R   R   R   t   TimeoutExpiredR   t   pfullmemR   R#   R/   R4   R:   R5   R@   RT   RU   t   disk_io_countersR^   t   FalseR]   R   R   Rm   R   R   R   R   R   R   t   objectR   (    (    (    s,   lib/python2.7/site-packages/psutil/_psaix.pyt   <module>   s   															!	%					