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

patch: cdrecord: realtime priority



This is a patch that allows to set a different realtime priority for
cdrecord.
Is usefull if other realtime processes are running.

-Hanspeter
diff -ru cdrtools-2.00.3.orig/cdrecord/cdrecord.1 cdrtools-2.00.3/cdrecord/cdrecord.1
--- cdrtools-2.00.3.orig/cdrecord/cdrecord.1	Tue Dec 24 16:28:40 2002
+++ cdrtools-2.00.3/cdrecord/cdrecord.1	Fri Dec 12 22:26:42 2003
@@ -1379,6 +1379,15 @@
 will allow you to write at the full RAW encoding speed a single CPU supports.
 This will create high potential of buffer underruns. Use with care.
 .TP
+.B CDR_RTPRIORITY
+If this environment variable is set on a system supporting realtime scheduling,
+.B cdrecord
+will try to set it's realtime priority according to
+.BR CDR_RTPRIORITY .
+If set to -1,
+.B cdrecord
+will run with nice priority only.
+.TP
 .B RSH
 If the 
 .B RSH
diff -ru cdrtools-2.00.3.orig/cdrecord/cdrecord.c cdrtools-2.00.3/cdrecord/cdrecord.c
--- cdrtools-2.00.3.orig/cdrecord/cdrecord.c	Wed May 28 14:06:37 2003
+++ cdrtools-2.00.3/cdrecord/cdrecord.c	Fri Dec 12 21:48:50 2003
@@ -3699,6 +3699,8 @@
 	int pri;
 {
 	struct sched_param scp;
+	char	*envvar;
+	int	cdrec_priority;
 
 	/*
 	 * Verify that scheduling is available
@@ -3711,6 +3713,13 @@
 #endif
 	fillbytes(&scp, sizeof(scp), '\0');
 	scp.sched_priority = sched_get_priority_max(SCHED_RR) - pri;
+	if ((envvar = getenv("CDR_RTPRIORITY")) != NULL) {
+		cdrec_priority = atoi(envvar);
+	    	if (cdrec_priority >= sched_get_priority_min(SCHED_RR))
+			scp.sched_priority = cdrec_priority - pri;
+		else
+		    	return (-1);
+	}
 	if (sched_setscheduler(0, SCHED_RR, &scp) < 0) {
 		errmsg("WARNING: Cannot set RR-scheduler\n");
 		return (-1);

Reply to: