1
0
mirror of https://github.com/ARM-software/devlib.git synced 2025-01-31 02:00:45 +00:00

cgroups: add support list tasks in a specified CGroup

Signed-off-by: Patrick Bellasi <patrick.bellasi@arm.com>
This commit is contained in:
Patrick Bellasi 2016-08-26 16:25:43 +01:00
parent 83c1312b22
commit 42efd0a2e2
2 changed files with 36 additions and 0 deletions

View File

@ -152,6 +152,17 @@ cgroups_tasks_move() {
done
}
cgroups_tasks_in() {
GRP=${1}
for TID in $($CAT $GRP/tasks); do
COMM=`$CAT /proc/$TID/comm 2>/dev/null`
[ "$COMM" != "" ] && CMDL=`$CAT /proc/$TID/cmdline 2>/dev/null`
[ "$COMM" != "" ] && echo "$TID,$COMM,$CMDL"
done
exit 0
}
################################################################################
# Main Function Dispatcher
################################################################################
@ -181,6 +192,9 @@ cgroups_run_into)
cgroups_tasks_move)
cgroups_tasks_move $*
;;
cgroups_tasks_in)
cgroups_tasks_in $*
;;
ftrace_get_function_stats)
ftrace_get_function_stats
;;

View File

@ -136,6 +136,28 @@ class Controller(object):
if cgroup != dest:
self.move_tasks(cgroup, dest)
def tasks(self, cgroup):
try:
cg = self._cgroups[cgroup]
except KeyError as e:
raise ValueError('Unkown group: {}'.format(e))
output = self.target._execute_util(
'cgroups_tasks_in {}'.format(cg.directory),
as_root=True)
entries = output.splitlines()
tasks = {}
for task in entries:
tid = task.split(',')[0]
try:
tname = task.split(',')[1]
except: continue
try:
tcmdline = task.split(',')[2]
except:
tcmdline = ''
tasks[int(tid)] = (tname, tcmdline)
return tasks
class CGroup(object):
def __init__(self, controller, name, create=True):