aboutsummaryrefslogtreecommitdiff
path: root/toys/pending/chrt.c
diff options
context:
space:
mode:
Diffstat (limited to 'toys/pending/chrt.c')
-rw-r--r--toys/pending/chrt.c81
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);
-}