[Asterisk-Dev] setpriority on non-Linux system

Thorsten Lockert tholo at sigmasoft.com
Wed Apr 23 12:58:03 MST 2003


This patch makes Asterisk call setpriority on non-Linux systems
where sched_setscheduler() is not likely to exist

Index: asterisk.c
===================================================================
RCS file: /usr/cvsroot/asterisk/asterisk.c,v
retrieving revision 1.4
diff -u -r1.4 asterisk.c
--- asterisk.c	23 Apr 2003 16:24:09 -0000	1.4
+++ asterisk.c	23 Apr 2003 19:54:47 -0000
@@ -313,6 +313,7 @@
 	memset(&sched, 0, sizeof(sched));
 	/* We set ourselves to a high priority, that we might pre-empt everything
 	   else.  If your PBX has heavy activity on it, this is a good thing.  */
+#ifdef __linux__
 	if (pri) {  
 		sched.sched_priority = 10;
 		if (sched_setscheduler(0, SCHED_RR, &sched)) {
@@ -328,6 +329,21 @@
 			return -1;
 		}
 	}
+#else
+	if (pri) {
+		if (setpriority(PRIO_PROCESS, 0, -10) == -1) {
+			ast_log(LOG_WARNING, "Unable to set high priority\n");
+			return -1;
+		} else
+			if (option_verbose)
+				ast_verbose("Set to high priority\n");
+	} else {
+		if (setpriority(PRIO_PROCESS, 0, 0) == -1) {
+			ast_log(LOG_WARNING, "Unable to set normal priority\n");
+			return -1;
+		}
+	}
+#endif
 	return 0;
 }
 
--
Thorsten Lockert      | tholo at sigmasoft.com | Universe, n.:
2121 N. Lakeshore Dr. | tholo at openbsd.org   |         The problem.
Chapel Hill, NC 27514 |                     |



More information about the asterisk-dev mailing list