[linux-audio-user] 2.6.15.4, realtime-lsm, jackd -R,

Ross Vandegrift ross at lug.udel.edu
Thu Feb 16 03:07:37 EST 2006


On Wed, Feb 15, 2006 at 09:47:00PM -0500, Ross Vandegrift wrote:
> Ok, now I have to run an experiment.

Experiment is done.  rlimits properly inherit with set_rlimits.
Granting RT privileges to any program I run is easy and transparent:

1) I added a line to set_rlimits.conf allowing anyone in the group
audio to run my window manager with RT abilities:
	@audio /usr/local/enlightenment/bin/enlightenment nice=-1 rtprio=80 memlock=67108864

2) I changed my .xsession to run the window manager with set_rlimits:
	exec /usr/local/bin/set_rlimits -k /usr/local/enlightenment/bin/enlightenment


The -k to set_rlimits is an option I added to continue even if
realtime privileges cannot be setup.  I did this so if I ever take
myself out of the audio group, I will still be able to login to my
Xsession.  Patch is below.

It's now just a bit more work to take the patch set_rlimits and edit
the system-wide display manager to invoke any users session with
set_rlimits.  Then, any user can take advantage of this without
modifying their config files.



diff -ur set_rlimits-1.2.0/set_rlimits.c set_rlimits/set_rlimits.c
--- set_rlimits-1.2.0/set_rlimits.c	2005-12-20 06:37:35.000000000 -0500
+++ set_rlimits/set_rlimits.c	2006-02-16 02:04:34.000000000 -0500
@@ -98,6 +98,7 @@
 
 signed int debug = 0;
 signed int verbose = 0;
+signed int cont = 0;
 
 /* rlimits for process */
 Rlimits rlimits = {
@@ -123,6 +124,7 @@
     "Available options:\n"
     " -d               Turn on additional debugging output.\n"
     " -h               Display this help message.\n"
+    " -k               Continue running program even if there's an error.\n"
     " -n[=<nlimit>]    Set nice limit to <nlimit>.  Values 0 to 39 equate to nice\n"
     "                  levels 19 to -20 respectively.\n"
     " -r[=<priority>]  Set realtime priority limit to <priority>.  Max available is\n"
@@ -216,6 +218,9 @@
             debug = 1;
           break;
         case 'h': err = -1; break;
+	case 'k': 
+	  cont = 1;
+	  break;
         case 'v':
           if (argv[i][2]!=0)
             err = -1;
@@ -632,10 +637,14 @@
     return -1;
   }
   /* No matching entry - permission denied */
-  if (!match) {
+  if (!match && !cont) {
     fprintf(stderr,"set_rlimits: no permission to run %s with elevated resource limits\n",
       *exec_path);
     return 0;
+  } else if (!match && cont) {
+    fprintf(stderr,"set_rlimits: no permission to run %s with elevated resource limits\n",
+      *exec_path);
+    fprintf(stderr,"set_rlimits: continuing anyway, as requested...\n");
   }
 
   if (debug) {

-- 
Ross Vandegrift
ross at lug.udel.edu

"The good Christian should beware of mathematicians, and all those who
make empty prophecies. The danger already exists that the mathematicians
have made a covenant with the devil to darken the spirit and to confine
man in the bonds of Hell."
	--St. Augustine, De Genesi ad Litteram, Book II, xviii, 37



More information about the Linux-audio-user mailing list