From 503cbbe1d4f2e5113fa709b005780bb376f83656 Mon Sep 17 00:00:00 2001 From: Karel Zak Date: Thu, 5 May 2011 14:23:22 +0200 Subject: [PATCH] chrt: allow to use --all-tasks when retrieve info master thread: $ chrt --pid $(pidof firefox) all threads: $ chrt --all-tasks --pid $(pidof firefox) Signed-off-by: Karel Zak --- schedutils/chrt.1 | 3 ++- schedutils/chrt.c | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/schedutils/chrt.1 b/schedutils/chrt.1 index c5d87f97d9..89664d6801 100644 --- a/schedutils/chrt.1 +++ b/schedutils/chrt.1 @@ -66,7 +66,8 @@ since Linux 2.6.31. operate on an existing PID and do not launch a new task .TP .B -a, --all-tasks -propagate changes to all the tasks (threads) for a given PID. +set or retrieve the scheduling attributes of the all tasks (threads) for a +given PID. .TP .B -b, --batch set scheduling policy to diff --git a/schedutils/chrt.c b/schedutils/chrt.c index 3669ba6a85..fca347678d 100644 --- a/schedutils/chrt.c +++ b/schedutils/chrt.c @@ -188,7 +188,8 @@ static void show_min_max(void) int main(int argc, char *argv[]) { - int i, policy = SCHED_RR, priority = 0, verbose = 0, policy_flag = 0, all_tasks = 0; + int i, policy = SCHED_RR, priority = 0, verbose = 0, policy_flag = 0, + all_tasks = 0; struct sched_param sp; pid_t pid = -1; @@ -268,7 +269,18 @@ int main(int argc, char *argv[]) show_usage(EXIT_FAILURE); if ((pid > -1) && (verbose || argc - optind == 1)) { - show_rt_info(pid, FALSE); + if (all_tasks) { + pid_t tid; + struct proc_tasks *ts = proc_open_tasks(pid); + + if (!ts) + err(EXIT_FAILURE, "cannot obtain the list of tasks"); + while (!proc_next_tid(ts, &tid)) + show_rt_info(tid, FALSE); + proc_close_tasks(ts); + } else + show_rt_info(pid, FALSE); + if (argc - optind == 1) return EXIT_SUCCESS; } @@ -296,11 +308,9 @@ int main(int argc, char *argv[]) if (!ts) err(EXIT_FAILURE, "cannot obtain the list of tasks"); - while (!proc_next_tid(ts, &tid)) if (sched_setscheduler(tid, policy, &sp) == -1) err(EXIT_FAILURE, _("failed to set tid %d's policy"), tid); - proc_close_tasks(ts); } else -- 2.47.3