diff options
author | Denys Vlasenko | 2018-01-23 16:01:13 +0100 |
---|---|---|
committer | Denys Vlasenko | 2018-01-23 16:04:48 +0100 |
commit | 66ad9be6031a3c5c0491b0040270b3f9ff591cdf (patch) | |
tree | 3225b99c853d2fdd9f41c4b2f10f8bf1ca592a44 | |
parent | 0f6e4350b3c36b3b4533d0ea910481e28d5f81ab (diff) | |
download | busybox-66ad9be6031a3c5c0491b0040270b3f9ff591cdf.zip busybox-66ad9be6031a3c5c0491b0040270b3f9ff591cdf.tar.gz |
chrt: use correct min/max priorities
function old new delta
chrt_main 369 432 +63
policies 48 96 +48
packed_usage 32239 32249 +10
------------------------------------------------------------------------------
(add/remove: 0/0 grow/shrink: 3/0 up/down: 121/0) Total: 121 bytes
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r-- | util-linux/chrt.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/util-linux/chrt.c b/util-linux/chrt.c index bbd6e2d..27c8f43 100644 --- a/util-linux/chrt.c +++ b/util-linux/chrt.c @@ -35,6 +35,9 @@ #include <sched.h> #include "libbb.h" +#ifndef SCHED_IDLE +# define SCHED_IDLE 5 +#endif static const struct { int policy; @@ -79,18 +82,22 @@ int chrt_main(int argc UNUSED_PARAM, char **argv) const char *current_new; int policy = SCHED_RR; - /* only one policy accepted */ - opt = getopt32(argv, "^+" "mprfobi" "\0" "r--fobi:f--robi:o--rfbi:b--rfoi:i--rfob"); + opt = getopt32(argv, "^" + "+" "mprfobi" + "\0" + /* only one policy accepted: */ + "r--fobi:f--robi:o--rfbi:b--rfoi:i--rfob" + ); if (opt & OPT_m) { /* print min/max and exit */ + show_min_max(SCHED_OTHER); show_min_max(SCHED_FIFO); show_min_max(SCHED_RR); - show_min_max(SCHED_OTHER); show_min_max(SCHED_BATCH); show_min_max(SCHED_IDLE); fflush_stdout_and_exit(EXIT_SUCCESS); } - if (opt & OPT_r) - policy = SCHED_RR; + //if (opt & OPT_r) + // policy = SCHED_RR; - default, already set if (opt & OPT_f) policy = SCHED_FIFO; if (opt & OPT_o) @@ -140,14 +147,9 @@ int chrt_main(int argc UNUSED_PARAM, char **argv) current_new += 8; } - /* from the manpage of sched_getscheduler: - [...] sched_priority can have a value in the range 0 to 99. - [...] SCHED_OTHER, SCHED_BATCH or SCHED_IDLE must be assigned static - priority 0. - [...] SCHED_FIFO or SCHED_RR can have static priority in 1..99 range. - */ sp.sched_priority = xstrtou_range(priority, 0, - (policy != SCHED_OTHER && policy != SCHED_BATCH && policy != SCHED_IDLE) ? 1 : 0, 99); + sched_get_priority_min(policy), sched_get_priority_max(policy) + ); if (sched_setscheduler(pid, policy, &sp) < 0) bb_perror_msg_and_die("can't %cet pid %d's policy", 's', (int)pid); |