Exemplo n.º 1
0
    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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
	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
Exemplo n.º 6
0
	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