
    w&b                        d dl Z d dlZd dlZd dlZg dZg dZd Z G d de      Z	 d dl	m
Z
 e
j                  Ze
j                  Z	  e j"                  dd	      Zej(                  Zg d
ZdZdZdez  dz
  Zd Zd Zd Zej8                  Z ed      \  ZZZ Z!Z"Z#ejH                  Z$d Z%d Z&d Z'd Z(d Z)d Z*e+dk(  rYd dl,Z, e-e,j\                        dk(  r e/e,j\                  d         Z0n ejb                         Z0 e2de0        e2d e'e0             yy# eef$ r  ee      Z ee      ZY w xY w# e$ r  e j"                  d      ZY w xY w)    N))alpha*i  )arm*r   i;  )i*86r   "  )ia64*r   i  )mips*32biti  )r	   64biti  )parisc*r   i  )powerpc*r   i  )s390*r   i  )sparc*r      )sh*r   !  )x86_64*r
   r   )r   r      ))r   r   i  )r   r   i:  )r   r   r   )r   r   i  )r	   r
   i  )r	   r   i  )r   r   i  )r   r   i  )r   r   i  )r   r      )r   r   i   )r   r
   r   )r   r      c                     t        j                         d   }t        j                         d   }| D ]7  \  }}}t	        j                  ||      st	        j                  ||      s5|c S  y )N   r   )osunameplatformarchitecturefnmatch)syscall_listarchbitscandidate_archcandidate_bits
syscall_nrs         ./usr/lib/python3/dist-packages/iotop/ioprio.pyfind_ioprio_syscall_numberr%   =   s\    88:a=D  "1%D6B 2
??40??40    c                       e Zd Zd Zy)IoprioSetErrorc                 f    	 t        j                  |      | _        y # t        $ r
 || _        Y y w xY wN)r   strerrorerr	TypeError)selfr,   s     r$   __init__zIoprioSetError.__init__H   s-    	{{3'DH 	DH	s    00N)__name__
__module____qualname__r/    r&   r$   r(   r(   G   s    r&   r(   )_ioprioT	use_errno)Nrtbeidle      c                     	 t         j                  |       } | t        z  |z  S # t        $ r t         j                  d       } Y ,w xY wr*   )PRIORITY_CLASSESindex
ValueErrorIOPRIO_CLASS_SHIFT)ioprio_classioprio_datas     r$   ioprio_valuerC   d   sK    4'--l; ..+==  4'--d34s   # AAc                 "    t         | t        z	     S r*   )r=   r@   ioprios    r$   rA   rA   l   s    F&8899r&   c                     | t         z  S r*   )IOPRIO_PRIO_MASKrE   s    r$   rB   rB   p   s    $$$r&      c                     t        |       }t        t        |       }|dz   dz  }|t        t        fv rd|z  S |t
        k(  ryd|z  S )N      zrt/%dr9   zbe/%d)sched_getschedulergetpriorityPRIO_PROCESS
SCHED_FIFOSCHED_RR
SCHED_IDLE)pid	schedulerniceioprio_nices       r$   get_ioprio_from_schedrW   {   sS    "3'I|S)D"9/KZ**$$	j	 $$r&   c                     t         yt        t         t        |       }|dk  ryt        |      }|st	        |       S |dk(  r|S d|t        |      fz  S )Nz?sysr   z?errr9   z%s/%d)__NR_ioprio_getsyscallIOPRIO_WHO_PROCESSrA   rW   rB   )rS   rF   
prio_classs      r$   getr]      s_    _&8#>Fzf%J$S))Vj+f"5666r&   c                     t         t        d      t        ||      }t        t         | ||d      }|dk  r 	 t	        j
                         }t        |      y # t        $ r d}Y t        |      w xY w)NzNo ioprio_set syscall foundTr5   r   z<Unknown error (errno support not available before Python2.6))__NR_ioprio_setr(   rC   rZ   ctypes	get_errnoAttributeError)whichwhorA   rB   
ioprio_valretr,   s          r$   
set_iopriorg      s    :;;lK8J
/5#zT
JC
Qw	O""$C S!!   	ON S!!	Os   A A0/A0c                     | d   dk(  rt        | d          S d| v rE| j                  d      rd}n| j                  d      rd}t        | j                  d      d         }n	| dk(  rd}d}dt        z  z  z   S )	Nr   ?r:   /zrt/zbe/r9      )ord
startswithintsplitr@   )keyshiftprios      r$   sort_keyrs      s    
1v}CF|
cz>>% E^^E"E399S>!$%	%,,-55r&   c                 `    d| v r$| j                  d      }|d   t        |d         fS | dk(  ryy)Nrj   r   r:   r9   )r9   r   )NN)ro   rn   )
ioprio_strro   s     r$   to_class_and_datarv      s?    
j  %a#eAh-((	v	r&   __main__rk   zpid:zioprio:)3r`   r   r   r   IOPRIO_GET_ARCH_SYSCALLIOPRIO_SET_ARCH_SYSCALLr%   	Exceptionr(   iotopr4   SYS_ioprio_getrY   SYS_ioprio_setr_   ImportErrorrb   CDLLctypes_handler-   rZ   r=   r[   r@   rH   rC   rA   rB   rM   rangeSCHED_OTHERrP   rQ   SCHED_BATCH	SCHED_ISOrR   rN   rO   rW   r]   rg   rs   rv   r0   syslenargvrn   rS   getpidprintr3   r&   r$   <module>r      s  &   	    "Y J,,O,,O
&FKK5M 

-   ++q0 >:% #55 	!H FZ;	: ''
%7 "6" z
388}#((1+biik	&#	)SX ] 	^$ J01HIO01HIOJ  &FKK%M&s#   D D4 D10D14EE