diff --git a/devlib/bin/scripts/shutils.in b/devlib/bin/scripts/shutils.in index 9200b70..bc47719 100755 --- a/devlib/bin/scripts/shutils.in +++ b/devlib/bin/scripts/shutils.in @@ -55,6 +55,20 @@ ftrace_get_function_stats() { done } + +################################################################################ +# CGroups Utility Functions +################################################################################ + +cgroups_get_attributes() { + [[ $# -eq 2 ]] || exit -1 + CGROUP="$1" + CONTROLLER="$2" + $GREP '' $CGROUP/* | \ + $GREP "$CONTROLLER\." | \ + $SED -e "s|$CONTROLLER\.||" -e "s|$CGROUP/||" +} + ################################################################################ # Main Function Dispatcher ################################################################################ @@ -75,6 +89,9 @@ cpufreq_get_all_governors) cpufreq_trace_all_frequencies) cpufreq_trace_all_frequencies $* ;; +cgroups_get_attributes) + cgroups_get_attributes $* + ;; ftrace_get_function_stats) ftrace_get_function_stats ;; diff --git a/devlib/module/cgroups.py b/devlib/module/cgroups.py index c55e135..ce10d01 100644 --- a/devlib/module/cgroups.py +++ b/devlib/module/cgroups.py @@ -98,7 +98,7 @@ class Controller(object): output = self.target.execute('{} find {} -type d'\ .format(self.target.busybox, self.mount_point)) cgroups = [] - for cg in output.split('\n'): + for cg in output.splitlines(): cg = cg.replace(self.mount_point + '/', '/') cg = cg.replace(self.mount_point, '/') cg = cg.strip() @@ -166,14 +166,10 @@ class CGroup(object): self.controller.kind) logging.debug(' %s', self.directory) - output = self.target.execute('{} grep \'\' {}/{}.*'.format( - self.target.busybox, - self.directory, - self.controller.kind)) - for res in output.split('\n'): - if res.find(self.controller.kind) < 0: - continue - res = res.split('.')[1] + output = self.target._execute_util( + 'cgroups_get_attributes {} {}'.format( + self.directory, self.controller.kind)) + for res in output.splitlines(): attr = res.split(':')[0] value = res.split(':')[1] conf[attr] = value @@ -261,7 +257,7 @@ class CgroupsModule(Module): def list_subsystems(self): subsystems = [] for line in self.target.execute('{} cat /proc/cgroups'\ - .format(self.target.busybox)).split('\n')[1:]: + .format(self.target.busybox)).splitlines()[1:]: line = line.strip() if not line or line.startswith('#'): continue