def run(self): changed = False if self.dialog.run() == gtk.RESPONSE_OK: new_policy = self.sched_policy.get_active() new_prio = int(self.sched_pri.get_value()) new_affinity = self.affinity.get_text() irq_re = tuna.threaded_irq_re(self.irq) pids = self.ps.find_by_regex(irq_re) if pids: if gui.thread_set_attributes(self.ps[pids[0]], new_policy, new_prio, new_affinity, self.irqs.nr_cpus): changed = True try: new_affinity = [int(a) for a in new_affinity.split(",")] except: try: new_affinity = tuna.cpustring_to_list(new_affinity) except: new_affinity = procfs.bitmasklist(new_affinity, self.irqs.nr_cpus) new_affinity.sort() curr_affinity = self.irqs[self.irq]["affinity"] if curr_affinity != new_affinity: tuna.set_irq_affinity( self.irq, procfs.hexbitmask(new_affinity, self.irqs.nr_cpus)) changed = True self.dialog.destroy() return changed
def drop_handler_move_irqs_to_cpu(cpus, data): irq_list = [ int(irq) for irq in data.split(",") ] new_affinity = [ reduce(lambda a, b: a | b, map(lambda cpu: 1 << cpu, cpus)), ] for irq in irq_list: tuna.set_irq_affinity(irq, new_affinity) # FIXME: check if we really changed the affinity, but # its only an optimization to avoid a needless refresh # in the irqview, now we always refresh. return True
def drop_handler_move_irqs_to_cpu(cpus, data): irq_list = [int(irq) for irq in data.split(",")] new_affinity = [ reduce(lambda a, b: a | b, map(lambda cpu: 1 << cpu, cpus)), ] for irq in irq_list: tuna.set_irq_affinity(irq, new_affinity) # FIXME: check if we really changed the affinity, but # its only an optimization to avoid a needless refresh # in the irqview, now we always refresh. return True
def restore_cpu(self): if not (self.previous_pid_affinities or \ self.previous_irq_affinities): return affinities = self.previous_pid_affinities for pid in affinities.keys(): try: schedutils.set_affinity(pid, affinities[pid]) except: pass affinities = self.previous_irq_affinities for irq in affinities.keys(): tuna.set_irq_affinity( int(irq), procfs.hexbitmask(affinities[irq], self.cpus.nr_cpus)) self.previous_pid_affinities = None self.previous_irq_affinities = None
def restore_cpu(self): if not (self.previous_pid_affinities or \ self.previous_irq_affinities): return affinities = self.previous_pid_affinities for pid in affinities.keys(): try: schedutils.set_affinity(pid, affinities[pid]) except: pass affinities = self.previous_irq_affinities for irq in affinities.keys(): tuna.set_irq_affinity(int(irq), procfs.hexbitmask(affinities[irq], self.cpus.nr_cpus)) self.previous_pid_affinities = None self.previous_irq_affinities = None
def run(self): changed = False if self.dialog.run() == gtk.RESPONSE_OK: new_policy = self.sched_policy.get_active() new_prio = int(self.sched_pri.get_value()) new_affinity = self.affinity.get_text() irq_re = tuna.threaded_irq_re(self.irq) pids = self.ps.find_by_regex(irq_re) if pids: if gui.thread_set_attributes(self.ps[pids[0]], new_policy, new_prio, new_affinity, self.irqs.nr_cpus): changed = True try: new_affinity = [ int(a) for a in new_affinity.split(",") ] except: try: new_affinity = tuna.cpustring_to_list(new_affinity) except: new_affinity = procfs.bitmasklist(new_affinity, self.irqs.nr_cpus) new_affinity.sort() curr_affinity = self.irqs[self.irq]["affinity"] if curr_affinity != new_affinity: tuna.set_irq_affinity(self.irq, procfs.hexbitmask(new_affinity, self.irqs.nr_cpus)) changed = True self.dialog.destroy() return changed