diff options
Diffstat (limited to 'toys/pending')
-rw-r--r-- | toys/pending/chrt.c | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/toys/pending/chrt.c b/toys/pending/chrt.c deleted file mode 100644 index 01076b93..00000000 --- a/toys/pending/chrt.c +++ /dev/null @@ -1,81 +0,0 @@ -/* chrt.c - Get/set real-time (scheduling) attributes - * - * Copyright 2016 The Android Open Source Project - * - * Note: -ibrfo flags sorted to match SCHED positions for highest_bit() - -USE_CHRT(NEWTOY(chrt, "^mp#<0iRbrfo[!ibrfo]", TOYFLAG_USR|TOYFLAG_SBIN)) - -config CHRT - bool "chrt" - default n - help - usage: chrt [-Rmofrbi] {-p PID [PRIORITY] | [PRIORITY COMMAND...]} - - Get/set a process' real-time scheduling policy and priority. - - -p Set/query given pid (instead of running COMMAND) - -R Set SCHED_RESET_ON_FORK - -m Show min/max priorities available - - Set policy (default -r): - - -o SCHED_OTHER -f SCHED_FIFO -r SCHED_RR - -b SCHED_BATCH -i SCHED_IDLE -*/ - -#define FOR_chrt -#include "toys.h" - -GLOBALS( - long pid; -) - -char *polnames[] = { - "SCHED_OTHER", "SCHED_FIFO", "SCHED_RR", "SCHED_BATCH", 0, "SCHED_IDLE", - "SCHED_DEADLINE" -}; - -void chrt_main(void) -{ - int pol, pri; - - // Show min/maxes? - if (toys.optflags&FLAG_m) { - for (pol = 0; pol<ARRAY_LEN(polnames); pol++) if (polnames[pol]) - printf("%s min/max priority\t: %d/%d\n", polnames[pol], - sched_get_priority_min(pol), sched_get_priority_max(pol)); - - return; - } - - // Query when -p without priority. - if (toys.optflags==FLAG_p && !*toys.optargs) { - char *s = "???", *R = ""; - - if (-1==(pol = sched_getscheduler(TT.pid))) perror_exit("pid %ld", TT.pid); - if (pol & SCHED_RESET_ON_FORK) R = "|SCHED_RESET_ON_FORK"; - if ((pol &= ~SCHED_RESET_ON_FORK)<ARRAY_LEN(polnames)) s = polnames[pol]; - printf("pid %ld's current scheduling policy: %s%s\n", TT.pid, s, R); - - if (sched_getparam(TT.pid, (void *)&pri)) perror_exit("sched_getparam"); - printf("pid %ld's current scheduling priority: %d\n", TT.pid, pri); - - return; - } - - if (!*toys.optargs) help_exit("no PRIORITY"); - if (!toys.optargs[1] == !(toys.optflags&FLAG_p)) - help_exit("need 1 of -p or COMMAND"); - - // Set policy and priority - if (-1==(pol = highest_bit(toys.optflags&0x2f))) pol = SCHED_RR; - pri = atolx_range(*toys.optargs, sched_get_priority_min(pol), - sched_get_priority_max(pol)); - if (toys.optflags&FLAG_R) pol |= SCHED_RESET_ON_FORK; - - if (sched_setscheduler(TT.pid, pol, (void *)&pri)) - perror_exit("sched_setscheduler"); - - if (*(toys.optargs+1)) xexec(++toys.optargs); -} |