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. Signed-off-by: Aurelien Jarno <aurelien@xxxxxxxxxxx> --- schedutils/chrt.c | 37 +++++++++++++++++++++++++++++++++---- 1 files changed, 33 insertions(+), 4 deletions(-) diff --git a/schedutils/chrt.c b/schedutils/chrt.c index dcd0524..6042168 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 @@ -59,9 +59,13 @@ static void show_usage(int rc) "\nGet policy:\n" " chrt [options] {<pid> | <command> [<arg> ...]}\n\n" "\nScheduling policies:\n" +#ifdef SCHED_BATCH " -b | --batch set policy to SCHED_BATCH\n" +#endif " -f | --fifo set policy to SCHED_FIFO\n" +#ifdef SCHED_IDLE " -i | --idle set policy to SCHED_IDLE\n" +#endif " -o | --other set policy to SCHED_OTHER\n" " -r | --rr set policy to SCHED_RR (default)\n" "\nOptions:\n" @@ -95,15 +99,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 +127,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]); @@ -141,9 +162,13 @@ int main(int argc, char *argv[]) pid_t pid = -1; struct option longopts[] = { +#ifdef SCHED_BATCH { "batch", 0, NULL, 'b' }, +#endif { "fifo", 0, NULL, 'f' }, +#ifdef SCHED_IDLE { "idle", 0, NULL, 'i' }, +#endif { "pid", 0, NULL, 'p' }, { "help", 0, NULL, 'h' }, { "max", 0, NULL, 'm' }, @@ -163,15 +188,19 @@ int main(int argc, char *argv[]) int ret = EXIT_FAILURE; switch (i) { +#ifdef SCHED_BATCH case 'b': policy = SCHED_BATCH; break; +#endif case 'f': policy = SCHED_FIFO; break; +#ifdef SCHED_IDLE case 'i': policy = SCHED_IDLE; break; +#endif case 'm': show_min_max(); return 0; -- 1.6.2.3 -- Aurelien Jarno GPG: 1024D/F1BCDB73 aurelien@xxxxxxxxxxx http://www.aurel32.net -- To unsubscribe from this list: send the line "unsubscribe util-linux-ng" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html