aboutsummaryrefslogtreecommitdiff
path: root/devlib/module
diff options
context:
space:
mode:
Diffstat (limited to 'devlib/module')
-rw-r--r--devlib/module/cgroups.py5
-rw-r--r--devlib/module/cpufreq.py15
2 files changed, 19 insertions, 1 deletions
diff --git a/devlib/module/cgroups.py b/devlib/module/cgroups.py
index bfe2785..472304e 100644
--- a/devlib/module/cgroups.py
+++ b/devlib/module/cgroups.py
@@ -287,6 +287,11 @@ class CGroup(object):
logging.debug('Tasks: %s', task_ids)
return map(int, task_ids)
+ # Used to insert fake cgroup attach events to know existing cgroup assignments
+ def trace_cgroup_tasks(self):
+ exec_cmd = "cgroup_trace_attach_task {} {} {}".format(self.controller.hid, self.directory, self.tasks_file)
+ self.target._execute_util(exec_cmd)
+
def add_task(self, tid):
self.target.write_value(self.tasks_file, tid, verify=False)
diff --git a/devlib/module/cpufreq.py b/devlib/module/cpufreq.py
index d72b8fd..e18d95b 100644
--- a/devlib/module/cpufreq.py
+++ b/devlib/module/cpufreq.py
@@ -382,7 +382,9 @@ class CpufreqModule(Module):
'cpufreq_set_all_governors {}'.format(governor),
as_root=True)
except TargetError as e:
- if "echo: I/O error" in str(e):
+ if ("echo: I/O error" in str(e) or
+ "write error: Invalid argument" in str(e)):
+
cpus_unsupported = [c for c in self.target.list_online_cpus()
if governor not in self.list_governors(c)]
raise TargetError("Governor {} unsupported for CPUs {}".format(
@@ -421,3 +423,14 @@ class CpufreqModule(Module):
sysfile = '/sys/devices/system/cpu/{}/cpufreq/affected_cpus'.format(cpu)
return [int(c) for c in self.target.read_value(sysfile).split()]
+
+ def iter_domains(self):
+ """
+ Iterate over the frequency domains in the system
+ """
+ cpus = set(range(self.target.number_of_cpus))
+ while cpus:
+ cpu = iter(cpus).next()
+ domain = self.target.cpufreq.get_domain_cpus(cpu)
+ yield domain
+ cpus = cpus.difference(domain)