o $DY@sdddlZddlZddlZddlZgdZgdZddZGdddeZeeZ eeZ z ej ddd Z Wne yCe dZ Ynwe jZgd Zd Zd Zd e>d Zd dZddZddZe jZed\ZZZZZZe jZdZddZ ddZ!ddZ"ddZ#ddZ$e%dkrddl&Z&e'e&j(dkre)e&j(d Z*ne+Z*e,d e*e,d!e!e*dSdS)"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||r#t||r#|SqdS)Nr)osunameplatform architecturefnmatch) syscall_listarchbitscandidate_archcandidate_bits syscall_nrr"./usr/lib/python3/dist-packages/iotop/ioprio.pyfind_ioprio_syscall_number>s    r$c@seZdZddZdS)IoprioSetErrorcCs.z t||_WdSty||_YdSwN)rstrerrorerr TypeError)selfr(r"r"r#__init__Is   zIoprioSetError.__init__N)__name__ __module__ __qualname__r+r"r"r"r#r%Hs r%T use_errno)Nrtbeidle cCs8zt|}Wntytd}Ynw|t>|BSr&)PRIORITY_CLASSESindex ValueErrorIOPRIO_CLASS_SHIFT) ioprio_class ioprio_datar"r"r# ioprio_value`s   r<cCs t|t?Sr&)r6r9ioprior"r"r#r:hs r:cCs|t@Sr&)IOPRIO_PRIO_MASKr=r"r"r#r;lsr;cCsFt|}tt|}|dd}|ttfvrd|S|tkrdSd|S)Nzrt/%dr3zbe/%d)sched_getscheduler getpriority PRIO_PROCESS SCHED_FIFOSCHED_RR SCHED_IDLE)pid schedulernice ioprio_nicer"r"r#get_ioprio_from_schedws   rMcCsTtdurdSttt|}|dkrdSt|}|st|S|dkr"|Sd|t|fS)Nz?sysrz?errr3z%s/%d)__NR_ioprio_getsyscallIOPRIO_WHO_PROCESSr:rMr;)rIr> prio_classr"r"r#gets rRcCshtdurtdt||}tt|||dd}|dkr2z t}Wt|ty1d}Yt|wdS)NzNo ioprio_set syscall foundTr/rz|S) Nr?r4/zrt/zbe/r3)ord startswithintsplitr9)keyshiftprior"r"r#sort_keys   rfcCs6d|vr|d}|dt|dfS|dkrdSdS)Nr]rr4r3)r3r)NN)rbra) ioprio_strrbr"r"r#to_class_and_datas  rh__main__r^zpid:zioprio:)-rTrrrIOPRIO_GET_ARCH_SYSCALLIOPRIO_SET_ARCH_SYSCALLr$ Exceptionr%rNrSCDLL ctypes_handler)rOr6rPr9r?r<r:r;rCrange SCHED_OTHERrFrG SCHED_BATCH SCHED_ISOrHrDrErMrRr[rfrhr,syslenargvrarIgetpidprintr"r"r"r#sR