[PATCH] schedutils: don't assume SCHED_BATCH and SCHED_IDLE exist

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux Admin]     [Samba]

  Powered by Linux