Get the current scheduling parameters of a process
#include <sched.h>
int sched_getparam( pid_t pid,
                    struct sched_param *param );
libc
Use the -l c option to qcc to link against this library. This library is usually included automatically.
The sched_getparam() function gets the current scheduling parameters (including the original and current priorities) of the process specified by pid, and puts them in the sched_param structure pointed to by param.
If pid is zero, function gets the parameters for the calling process.
#include <sched.h>
#include <stdio.h>
#define PRIORITY_ADJUSTMENT 5
int main (void)
{
   int max_priority;
   struct sched_param param;
   /* Find out the MAX priority for the FIFO Scheduler */
   max_priority = sched_get_priority_max(SCHED_FIFO);
   /* Find out what the current priority is. */
   sched_getparam(0, ¶m);
   printf("The assigned priority is %d.\n", param.sched_priority);
   printf("The current priority is %d.\n", param.sched_curpriority);
   param.sched_priority = ((param.sched_curpriority +
   PRIORITY_ADJUSTMENT) <= max_priority) ?
      (param.sched_curpriority + PRIORITY_ADJUSTMENT) : -1;
   if (param.sched_priority == -1)
   {
      printf(
        "Cannot increase the priority by %d. Try a smaller value\n",
        PRIORITY_ADJUSTMENT);
      return(0);
   }
   sched_setscheduler (0, SCHED_FIFO, ¶m);
   sched_getparam(0, &qparam);
   printf("The newly assigned priority is %d.\n",
          param.sched_priority);
   printf("The current priority is %d.\n",
          param.sched_curpriority);
   return(0);
}
| Safety: | |
|---|---|
| Cancellation point | No | 
| Interrupt handler | No | 
| Signal handler | Yes | 
| Thread | Yes |