summaryrefslogtreecommitdiffstats
path: root/schedutils/chrt.c
diff options
context:
space:
mode:
authorAurelien Jarno2009-04-22 09:18:28 +0200
committerKarel Zak2009-05-07 11:28:08 +0200
commitb64279dab84373f060d589bdd519dbfa255adc58 (patch)
treee7db453544e78c702683d5195484f4ff26938283 /schedutils/chrt.c
parentcal: Highlight today even when month or year specified (diff)
downloadkernel-qcow2-util-linux-b64279dab84373f060d589bdd519dbfa255adc58.tar.gz
kernel-qcow2-util-linux-b64279dab84373f060d589bdd519dbfa255adc58.tar.xz
kernel-qcow2-util-linux-b64279dab84373f060d589bdd519dbfa255adc58.zip
chrt: don't assume SCHED_BATCH and SCHED_IDLE exist
SCHED_FIFO, SCHED_OTHER, SCHED_RR are part of POSIX 1003.1b Process Scheduling, so it is correct to assume they always exists. SCHED_BATCH and SCHED_IDLE are Linux specific, we should not assume they exists. Defining SCHED_BATCH and SCHED_IDLE to random values (ie the ones found on Linux systems) is not an option as they may *collide* with the one of other systems. For example on GNU/kFreeBSD we have: #define SCHED_RR 3 and on Linux we have: #define SCHED_BATCH 3 [kzak@redhat.com: - add "Linux specific" notes to chrt.1 - add a note about BATCH and PR conflict to this commit message] Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> Signed-off-by: Karel Zak <kzak@redhat.com>
Diffstat (limited to 'schedutils/chrt.c')
-rw-r--r--schedutils/chrt.c29
1 files changed, 25 insertions, 4 deletions
diff --git a/schedutils/chrt.c b/schedutils/chrt.c
index dcd052403..7d6bb2dbc 100644
--- a/schedutils/chrt.c
+++ b/schedutils/chrt.c
@@ -34,7 +34,7 @@
/* the SCHED_BATCH is supported since Linux 2.6.16
* -- temporary workaround for people with old glibc headers
*/
-#ifndef SCHED_BATCH
+#if defined (__linux__) && !defined(SCHED_BATCH)
# define SCHED_BATCH 3
#endif
@@ -42,7 +42,7 @@
* commit id 0e6aca43e08a62a48d6770e9a159dbec167bf4c6
* -- temporary workaround for people with old glibc headers
*/
-#ifndef SCHED_IDLE
+#if defined (__linux__) && !defined(SCHED_IDLE)
# define SCHED_IDLE 5
#endif
@@ -95,15 +95,19 @@ static void show_rt_info(const char *what, pid_t pid)
case SCHED_FIFO:
printf("SCHED_FIFO\n");
break;
+#ifdef SCHED_IDLE
case SCHED_IDLE:
printf("SCHED_IDLE\n");
break;
+#endif
case SCHED_RR:
printf("SCHED_RR\n");
break;
+#ifdef SCHED_BATCH
case SCHED_BATCH:
printf("SCHED_BATCH\n");
break;
+#endif
default:
printf(_("unknown\n"));
}
@@ -119,8 +123,21 @@ static void show_min_max(void)
{
int i;
int policies[] = { SCHED_OTHER, SCHED_FIFO, SCHED_RR,
- SCHED_BATCH, SCHED_IDLE };
- const char *names[] = { "OTHER", "FIFO", "RR", "BATCH", "IDLE" };
+#ifdef SCHED_BATCH
+ SCHED_BATCH,
+#endif
+#ifdef SCHED_IDLE
+ SCHED_IDLE,
+#endif
+ };
+ const char *names[] = { "OTHER", "FIFO", "RR",
+#ifdef SCHED_BATCH
+ "BATCH",
+#endif
+#ifdef SCHED_IDLE
+ "IDLE",
+#endif
+ };
for (i = 0; i < ARRAY_SIZE(policies); i++) {
int max = sched_get_priority_max(policies[i]);
@@ -164,13 +181,17 @@ int main(int argc, char *argv[])
switch (i) {
case 'b':
+#ifdef SCHED_BATCH
policy = SCHED_BATCH;
+#endif
break;
case 'f':
policy = SCHED_FIFO;
break;
case 'i':
+#ifdef SCHED_IDLE
policy = SCHED_IDLE;
+#endif
break;
case 'm':
show_min_max();