Ńņ
A”KKc           @   s  d  d k  Z  d  d k Z d  d k Z d  d k Z d  d k Z d3 d4 d5 d6 d7 d8 d9 d: d; g	 Z d< d= d> d? d@ dA dB dC dD g	 Z d   Z d e f d     YZ	 e e  Z
 e e  Z y e  i d d e Z Wn" e j
 o e  i d  Z n Xe i Z d d  d! d" g Z d# Z d$ Z d# e >d# Z d%   Z d&   Z d'   Z e i Z e d(  \ Z Z Z Z Z Z  e i! Z! d) Z" d*   Z# d+   Z$ d,   Z% d-   Z& d.   Z' e( d/ j oa d  d k) Z) e* e) i+  d0 j o e, e) i+ d#  Z- n e i.   Z- d1 Ge- GHd2 Ge$ e-  GHn d S(E   i’’’’Nt   alphat   *i»  s   i*86i"  s   ia64*iū  s   powerpc*i  s   s390*i  s   sparc*iŚ   s   sh*i!  s   x86_64*t   32bitt   64bitiü   iŗ  iś  i  i  iÄ   i   iū   c         C   si   t  i   d } t i   d } xB |  D]: \ } } } t i | |  o t i | |  o | Sq' Wd  S(   Ni   i    (   t   ost   unamet   platformt   architecturet   fnmatch(   t   syscall_listt   archt   bitst   candidate_archt   candidate_bitst
   syscall_nr(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   find_ioprio_syscall_number$   s     t   IoprioSetErrorc           B   s   e  Z d    Z RS(   c         C   s9   y t  i |  |  _ Wn t j
 o | |  _ n Xd  S(   N(   R   t   strerrort   errt	   TypeError(   t   selfR   (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   __init__.   s    (   t   __name__t
   __module__R   (    (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyR   -   s   t	   use_errnot   rtt   bet   idlei   i   c         C   sD   y t  i |   }  Wn" t j
 o t  i d   }  n X|  t >| BS(   N(   t   PRIORITY_CLASSESt   indext
   ValueErrort   Nonet   IOPRIO_CLASS_SHIFT(   t   ioprio_classt   ioprio_data(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   ioprio_valueD   s
    c         C   s   t  |  t ?S(   N(   R   R    (   t   ioprio(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyR!   K   s    c         C   s   |  t  @S(   N(   t   IOPRIO_PRIO_MASK(   R$   (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyR"   N   s    i   i    c         C   sc   t  |   } t t |   } | d d } | t t f j o	 d | S| t j o d Sd | Sd  S(   Ni   i   s   rt/%dR   s   be/%d(   t   sched_getschedulert   getpriorityt   PRIO_PROCESSt
   SCHED_FIFOt   SCHED_RRt
   SCHED_IDLE(   t   pidt	   schedulert   nicet   ioprio_nice(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   get_ioprio_from_schedW   s    	c         C   sz   t  d  j o d St t  t |   } | d j  o d St |  } | p t |   S| d j o | Sd | t |  f S(   Ns   ?sysi    s   ?errR   s   %s/%d(   t   __NR_ioprio_getR   t   syscallt   IOPRIO_WHO_PROCESSR!   R0   R"   (   R,   R$   t
   prio_class(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   getc   s    c         C   s   t  d  j o t d   n t | |  } t t  |  | | d t } | d j  o< y t i   } Wn t j
 o d } n Xt |   n d  S(   Ns   No ioprio_set syscall foundR   i    s<   Unknown error (errno support not available before Python2.6)(	   t   __NR_ioprio_setR   R   R#   R2   t   Truet   ctypest	   get_errnot   AttributeError(   t   whicht   whoR!   R"   t
   ioprio_valt   retR   (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt
   set_ioprior   s    c         C   s¬   |  d d j o t  |  d  Sd |  j oQ |  i d  o
 d } n |  i d  o
 d } n t |  i d  d  } n |  d j o d } d } n d | t >| S(	   Ni    t   ?i   t   /s   rt/s   be/R   i   (   t   ordt
   startswitht   intt   splitR    (   t   keyt   shiftt   prio(    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   sort_key   s    


c         C   sK   d |  j o( |  i  d  } | d t | d  f S|  d j o d Sd S(   NRA   i    i   R   (   s   idlei    (   NN(   RE   RD   R   (   t
   ioprio_strRE   (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   to_class_and_data   s    t   __main__i   s   pid:s   ioprio:(   R    R   i»  (   s   i*86R   i"  (   s   ia64*R   iū  (   s   powerpc*R   i  (   s   s390*R   i  (   s   sparc*R   iŚ   (   s   sh*R   i!  (   s   x86_64*R   i"  (   s   x86_64*R   iü   (   R    R   iŗ  (   s   i*86R   i!  (   s   ia64*R   iś  (   s   powerpc*R   i  (   s   s390*R   i  (   s   sparc*R   iÄ   (   s   sh*R   i   (   s   x86_64*R   i!  (   s   x86_64*R   iū   (/   R8   R   R   R   t   timet   IOPRIO_GET_ARCH_SYSCALLt   IOPRIO_SET_ARCH_SYSCALLR   t	   ExceptionR   R1   R6   t   CDLLR   R7   t   ctypes_handleR   R2   R   R3   R    R%   R#   R!   R"   R&   t   ranget   SCHED_OTHERR)   R*   t   SCHED_BATCHt	   SCHED_ISOR+   R'   R(   R0   R5   R?   RI   RK   R   t   syst   lent   argvRD   R,   t   getpid(    (    (    s,   /usr/lib/pymodules/python2.6/iotop/ioprio.pyt   <module>   sl   																