PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`#!/usr/libexec/platform-python # Helper script for realtime profiles provided by RT import os import sys irqpath = "/proc/irq/" def bitmasklist(line): fields = line.strip().split(",") bitmasklist = [] entry = 0 for i in range(len(fields) - 1, -1, -1): mask = int(fields[i], 16) while mask != 0: if mask & 1: bitmasklist.append(entry) mask >>= 1 entry += 1 return bitmasklist def get_cpumask(mask): groups = [] comma = 0 while mask: cpumaskstr = '' m = mask & 0xffffffff cpumaskstr += ('%x' % m) if comma: cpumaskstr += ',' comma = 1 mask >>= 32 groups.append(cpumaskstr) string = '' for i in reversed(groups): string += i return string def parse_def_affinity(fname): if os.getuid() != 0: return try: with open(fname, 'r') as f: line = f.readline() return bitmasklist(line) except IOError: return [ 0 ] def verify(shouldbemask): inplacemask = 0 fname = irqpath + "default_smp_affinity"; cpulist = parse_def_affinity(fname) for i in cpulist: inplacemask = inplacemask | 1 << i; if (inplacemask & ~shouldbemask): sys.stderr.write("verify: failed: irqaffinity (%s) inplacemask=%x shouldbemask=%x\n" % (fname, inplacemask, shouldbemask)) sys.exit(1) # now verify each /proc/irq/$num/smp_affinity interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(os.path.join(irqpath,f)) ] # IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9) try: interruptdirs.remove("2") except ValueError: pass # IRQ 0 - system timer (cannot be changed) try: interruptdirs.remove("0") except ValueError: pass for i in interruptdirs: inplacemask = 0 fname = irqpath + i + "/smp_affinity" cpulist = parse_def_affinity(fname) for i in cpulist: inplacemask = inplacemask | 1 << i; if (inplacemask & ~shouldbemask): sys.stderr.write("verify: failed: irqaffinity (%s) inplacemask=%x shouldbemask=%x\n" % (fname, inplacemask, shouldbemask)) sys.exit(1) sys.exit(0) sys.stderr.write("defirqaffinity.py is deprecated. Use isolated_cores or other built-in functionality instead.\n") # adjust default_smp_affinity cpulist = parse_def_affinity(irqpath + "default_smp_affinity") mask = 0 for i in cpulist: mask = mask | 1 << i; if len(sys.argv) < 3 or len(str(sys.argv[2])) == 0: sys.stderr.write("%s: invalid arguments\n" % os.path.basename(sys.argv[0])) sys.exit(1) line = sys.argv[2] fields = line.strip().split(",") for i in fields: if sys.argv[1] == "add": mask = mask | 1 << int(i); elif sys.argv[1] == "remove" or sys.argv[1] == "verify": mask = mask & ~(1 << int(i)); if sys.argv[1] == "verify": verify(mask) string = get_cpumask(mask) fo = open(irqpath + "default_smp_affinity", "w") fo.write(string) fo.close() # now adjust each /proc/irq/$num/smp_affinity interruptdirs = [ f for f in os.listdir(irqpath) if os.path.isdir(os.path.join(irqpath,f)) ] # IRQ 2 - cascaded signals from IRQs 8-15 (any devices configured to use IRQ 2 will actually be using IRQ 9) try: interruptdirs.remove("2") except ValueError: pass # IRQ 0 - system timer (cannot be changed) try: interruptdirs.remove("0") except ValueError: pass ret = 0 for i in interruptdirs: fname = irqpath + i + "/smp_affinity" cpulist = parse_def_affinity(fname) mask = 0 for j in cpulist: mask = mask | 1 << j; for j in fields: if sys.argv[1] == "add": mask = mask | 1 << int(j); elif sys.argv[1] == "remove": mask = mask & ~(1 << int(j)); string = get_cpumask(mask) try: fo = open(fname, "w") fo.write(string) fo.close() except IOError as e: sys.stderr.write('Failed to set smp_affinity for IRQ %s: %s\n' % (str(i), str(e))) ret = 1 sys.exit(ret)