
    w&b                        S SK r S SKrS SKrS SKr/ SQr/ SQrS r " S S\5      r S SK	J
r
  \
R                  r\
R                  r \ R"                  " SSS	9r\R(                  r/ S
QrSrSrS\-  S-
  rS rS rS r\R8                  r\" S5      u  rrr r!r"r#\RH                  r$S r%S r&S r'S r(S r)S r*\+S:X  aZ  S SK,r,\-" \,R\                  5      S:X  a  \/" \,R\                  S   5      r0O\Rb                  " 5       r0\2" S\05        \2" S\'" \05      5        gg! \\4 a    \" \5      r\" \5      r Nf = f! \ a    \ R"                  " S5      r Nf = f)    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                     [         R                  " 5       S   n[        R                  " 5       S   nU  HB  u  p4n[        R                  " X5      (       d  M#  [        R                  " X$5      (       d  M@  Us  $    g )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%   =   sX    88:a=D  "1%D6B2
??400??400 7C    c                       \ rS rSrS rSrg)IoprioSetErrorG   c                 h     [         R                  " U5      U l        g ! [         a	    Xl         g f = fN)r   strerrorerr	TypeError)selfr-   s     r$   __init__IoprioSetError.__init__H   s+    	{{3'DH 	H	s    11)r-   N)__name__
__module____qualname____firstlineno__r0   __static_attributes__ r&   r$   r(   r(   G   s    r&   r(   )_ioprioT	use_errno)Nrtbeidle      c                      [         R                  U 5      n U [        -  U-  $ ! [         a    [         R                  S 5      n  N-f = fr+   )PRIORITY_CLASSESindex
ValueErrorIOPRIO_CLASS_SHIFT)ioprio_classioprio_datas     r$   ioprio_valuerG   d   sK    4'--l; ..+==  4'--d34s   # AAc                 "    [         U [        -	     $ r+   )rA   rD   ioprios    r$   rE   rE   l   s    F&8899r&   c                     U [         -  $ r+   )IOPRIO_PRIO_MASKrI   s    r$   rF   rF   p   s    $$$r&      c                     [        U 5      n[        [        U 5      nUS-   S-  nU[        [        4;   a  SU-  $ U[
        :X  a  gSU-  $ )N      zrt/%dr=   zbe/%d)sched_getschedulergetpriorityPRIO_PROCESS
SCHED_FIFOSCHED_RR
SCHED_IDLE)pid	schedulerniceioprio_nices       r$   get_ioprio_from_schedr[   {   sS    "3'I|S)D"9/KZ**$$	j	 $$r&   c                     [         c  g[        [         [        U 5      nUS:  a  g[        U5      nU(       d  [	        U 5      $ US:X  a  U$ SU[        U5      4-  $ )Nz?sysr   z?errr=   z%s/%d)__NR_ioprio_getsyscallIOPRIO_WHO_PROCESSrE   r[   rF   )rW   rJ   
prio_classs      r$   getra      s_    _&8#>Fzf%J$S))Vj+f"5666r&   c                     [         c  [        S5      e[        X#5      n[        [         XUSS9nUS:  a!   [        R
                  " 5       n[        U5      eg ! [         a    Sn Nf = f)NzNo ioprio_set syscall foundTr9   r   z<Unknown error (errno support not available before Python2.6))__NR_ioprio_setr(   rG   r^   ctypes	get_errnoAttributeError)whichwhorE   rF   
ioprio_valretr-   s          r$   
set_iopriork      sv    :;;l8J
/5zT
JC
Qw	O""$C S!!   	ON 	Os   A A%$A%c                    U S   S:X  a  [        U S   5      * $ SU ;   aO  U R                  S5      (       a  SnOU R                  S5      (       a  Sn[        U R                  S5      S   5      nO
U S:X  a  SnSnSW[        -  -  W-   $ )	Nr   ?r>   /zrt/zbe/r=      )ord
startswithintsplitrD   )keyshiftprios      r$   sort_keyrw      s    
1v}CF|
cz>>%  E^^E""E399S>!$%	%,,-55r&   c                 f    SU ;   a$  U R                  S5      nUS   [        US   5      4$ U S:X  a  gg)Nrn   r   r>   r=   )r=   r   )NN)rs   rr   )
ioprio_strrs   s     r$   to_class_and_datarz      s?    
j  %a#eAh-((	v	r&   __main__ro   zpid:zioprio:)3rd   r   r   r   IOPRIO_GET_ARCH_SYSCALLIOPRIO_SET_ARCH_SYSCALLr%   	Exceptionr(   iotopr8   SYS_ioprio_getr]   SYS_ioprio_setrc   ImportErrorrf   CDLLctypes_handler.   r^   rA   r_   rD   rL   rG   rE   rF   rQ   rangeSCHED_OTHERrT   rU   SCHED_BATCH	SCHED_ISOrV   rR   rS   r[   ra   rk   rw   rz   r2   syslenargvrr   rW   getpidprintr7   r&   r$   <module>r      s  &   	    "Y J,,O,,O
&KK5M 

-   ++q0 >:% #55 	!H FZ;	: ''
%7 "6" z
388}#((1+iik	&#	)SX ] 	^$ J01HIO01HIOJ  &KK%M&s#   D D4 D10D14EE