problems coding a real-time process
    Ray Strode 
    halfline at hawaii.rr.com
       
    Tue Jan 22 00:29:09 PST 2002
    
    
  
>
>
>Is anybody familiar enough with this to explain it, or 
>
>maybe point me in the right direction?
>
I'm just guessing here, but I bet the problem is you aren't running the 
program
as superuser.  I have a feeling if you #include <errno.h> and check if 
errno == EPERM
you will find it does.  But do the check immediately after finding out 
if the call returns
-1.  Remember errno is undefined after a successful library call, so
you can't depend on it's value after making a library call (even functions
related to errno like perror()).  I suspect you are getting 29, because 
you've made some
library calls in between setscheduler() and your check to errno.  In the 
future, use
perror() or strerror() to find out what's going on... ie...
int retval = -1;
...
retval = sched_setscheduler(...);
// Note there is no ellipses here, I MEAN IT...don't do anything from 
libc here.
if (retval == -1) {
    perror("sched_setscheduler() error");
}
in your final code do something like...
#include <errno.h>
extern int errno;
....
retval = sched_setscheduler(...);
if (retval == -1) {
    switch (errno) {
         case EPERM:
         break;
         ....
    }
}
--Ray Strode
    
    
More information about the LUAU
mailing list