???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................3
BQw                 @   s  d dl Z d dlZd dlZd dlZdBdCdDdEdFdGdHdIdJdKdLgZdMdNdOdPdQdRdSdTdUdVdWgZd"d# ZG d$d% d%eZeeZ	eeZ
ye jdd&d'ZW n  ek
 r   e jdZY nX ejZdd(d)d*gZd+Zd,Zd+e> d+ Zd-d. Zd/d0 Zd1d2 ZejZed3\ZZZZZZejZd Zd4d5 Z d6d7 Z!d8d9 Z"d:d; Z#d<d= Z$e%d>krd dl&Z&e'e&j(d?krle)e&j(d+ Z*nej+ Z*e,d@e* e,dAe!e* dS )X    Nalpha*  arm*;  i*86"  ia64*  parisc*  powerpc*  s390*  sparc*   sh*!  x86_64*32bit64bit     :                   c             C   sL   t j d }tj d }x.| D ]&\}}}tj||rtj||r|S qW d S )N   r   )osunameplatformZarchitecturefnmatch)Zsyscall_listZarchbitsZcandidate_archZcandidate_bitsZ
syscall_nr r(   /usr/lib/python3.6/ioprio.pyfind_ioprio_syscall_number9   s    r*   c               @   s   e Zd Zdd ZdS )IoprioSetErrorc             C   s0   yt j|| _W n tk
r*   || _Y nX d S )N)r#   strerrorerr	TypeError)selfr-   r(   r(   r)   __init__C   s    zIoprioSetError.__init__N)__name__
__module____qualname__r0   r(   r(   r(   r)   r+   B   s   r+   T)	use_errnoZrtZbeidle      c             C   s:   yt j| } W n tk
r,   t jd } Y nX | t> |B S )N)PRIORITY_CLASSESindex
ValueErrorIOPRIO_CLASS_SHIFT)ioprio_classioprio_datar(   r(   r)   ioprio_valueY   s
    r>   c             C   s   t | t?  S )N)r8   r;   )ioprior(   r(   r)   r<   `   s    r<   c             C   s   | t @ S )N)IOPRIO_PRIO_MASK)r?   r(   r(   r)   r=   c   s    r=      c             C   sJ   t | }tt| }|d d }|ttfkr2d| S |tkr>dS d| S d S )N      zrt/%dr5   zbe/%d)sched_getschedulergetpriorityPRIO_PROCESS
SCHED_FIFOSCHED_RR
SCHED_IDLE)pidZ	schedulerniceZioprio_nicer(   r(   r)   get_ioprio_from_schedl   s    
rL   c             C   sT   t d krdS tt t| }|dk r$dS t|}|s8t| S |dkrD|S d|t|f S )Nz?sysr   z?errr5   z%s/%d)__NR_ioprio_getsyscallIOPRIO_WHO_PROCESSr<   rL   r=   )rJ   r?   Z
prio_classr(   r(   r)   getx   s    rP   c             C   sf   t d krtdt||}tt | ||dd}|dk rbytj }W n tk
rX   d}Y nX t|d S )NzNo ioprio_set syscall foundT)r4   r   z<Unknown error (errno support not available before Python2.6))__NR_ioprio_setr+   r>   rN   ctypesZ	get_errnoAttributeError)ZwhichZwhor<   r=   Z
ioprio_valretr-   r(   r(   r)   
set_ioprio   s    

rU   c             C   st   | d dkrt | d  S d| krT| jdr2d}n| jdr@d}t| jdd }n| dkrdd}d}d|t > | S )	Nr   ?r6   /zrt/zbe/r5      )ord
startswithintsplitr;   )keyZshiftZprior(   r(   r)   sort_key   s    

r^   c             C   s6   d| kr&| j d}|d t|d fS | dkr2dS dS )NrW   r   r6   r5   )r5   r   )NN)r\   r[   )Z
ioprio_strr\   r(   r(   r)   to_class_and_data   s    
r_   __main__rX   zpid:zioprio:)r   r   r   )r   r   r   )r   r   r   )r	   r   r
   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r	   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r   )r   r   r    )r   r   r   )r   r   r!   )-rR   r&   r#   r%   ZIOPRIO_GET_ARCH_SYSCALLZIOPRIO_SET_ARCH_SYSCALLr*   	Exceptionr+   rM   rQ   ZCDLLZctypes_handler.   rN   r8   rO   r;   r@   r>   r<   r=   rD   rangeSCHED_OTHERrG   rH   SCHED_BATCHZ	SCHED_ISOrI   rE   rF   rL   rP   rU   r^   r_   r1   syslenargvr[   rJ   getpidprintr(   r(   r(   r)   <module>   sr   	

