U $DY @sddlZddlZddlZddlZdddddddd d d d d dg Zdddddddddddddg ZddZGdddeZeeZ eeZ zej dd d!Z Wne k re dZ YnXe jZdd"d#d$gZd%Zd&Zd%e>d%Zd'd(Zd)d*Zd+d,Ze jZed-\ZZZZZZe jZdZd.d/Z d0d1Z!d2d3Z"d4d5Z#d6d7Z$e%d8krddl&Z&e'e&j(d9krre)e&j(d%Z*ne+Z*e,d:e*e,d;e!e*dS)<N)alpha*i)arm*ri;)i*86r")ia64*ri)mips*32biti)r64biti)parisc*ri )powerpc*ri)s390*ri)sparc*r)sh*r!)x86_64*r r)rr )rri)rri:)rrr)rri)rr i)rr i)r ri )r ri)r ri)rr)rri )rr r)rr cCsLtd}td}|D]*\}}}t||rt||r|SqdS)Nr)osunameplatformZ architecturefnmatch)Z syscall_listZarchbitsZcandidate_archZcandidate_bitsZ syscall_nrr./usr/lib/python3/dist-packages/iotop/ioprio.pyfind_ioprio_syscall_number>s    rc@seZdZddZdS)IoprioSetErrorcCs0zt||_Wntk r*||_YnXdSN)rstrerrorerr TypeError)selfr"rrr__init__IszIoprioSetError.__init__N)__name__ __module__ __qualname__r%rrrrrHsrTZ use_errnoZrtZbeidle cCs:zt|}Wntk r,td}YnX|t>|BSr )PRIORITY_CLASSESindex ValueErrorIOPRIO_CLASS_SHIFT) ioprio_class ioprio_datarrr ioprio_value`s r3cCs t|t?Sr )r-r0iopriorrrr1hsr1cCs|t@Sr )IOPRIO_PRIO_MASKr4rrrr2lsr2cCsJt|}tt|}|dd}|ttfkr2d|S|tkr>dSd|SdS)Nzrt/%dr*zbe/%d)sched_getscheduler getpriority PRIO_PROCESS SCHED_FIFOSCHED_RR SCHED_IDLE)pidZ schedulerniceZ ioprio_nicerrrget_ioprio_from_schedws   rBcCsTtdkr dSttt|}|dkr$dSt|}|s8t|S|dkrD|Sd|t|fS)Nz?sysrz?errr*z%s/%d)__NR_ioprio_getsyscallIOPRIO_WHO_PROCESSr1rBr2)r@r5Z prio_classrrrgets rFcCsftdkrtdt||}tt|||dd}|dkrbz t}Wntk rXd}YnXt|dS)NzNo ioprio_set syscall foundTr)rz|S) Nr?r+/zrt/zbe/r*)ord startswithintsplitr0)keyshiftZpriorrrsort_keys   rTcCs6d|kr&|d}|dt|dfS|dkr2dSdS)NrLrr+r*)r*r)NN)rQrP)Z ioprio_strrQrrrto_class_and_datas  rU__main__rMzpid:zioprio:)-rHrrrZIOPRIO_GET_ARCH_SYSCALLZIOPRIO_SET_ARCH_SYSCALLr ExceptionrrCrGZCDLLZ ctypes_handler#rDr-rEr0r6r3r1r2r:range SCHED_OTHERr=r> SCHED_BATCHZ SCHED_ISOr?r;r<rBrFrJrTrUr&syslenargvrPr@getpidprintrrrrs