[Previous] [Contents] [Index] [Next]

Caution: This version of this document is no longer maintained. For the latest documentation, see http://www.qnx.com/developers/docs.

sched_getparam()

Get the current priority of a process

Synopsis:

#include <sched.h>

int sched_getparam( pid_t pid,
                    struct sched_param *param );

Arguments:

pid
The ID of the process whose priority you want to get, or 0 to get it for the current process.
param
A pointer to a sched_param that the function fills with the scheduling parameters.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The sched_getparam() function gets the current priority of the process specified by pid, and puts it in the sched_priority member of the sched_param structure pointed to by param.

If pid is zero, the priority of the calling process is returned.

Returns:

0
Success
-1
An error occurred (errno is set).

Errors:

EPERM
The calling process doesn't have sufficient privilege to get the priority.
ESRCH
The process pid doesn't exist.

Examples:

#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 Schedular */
   max_priority = sched_get_priority_max(SCHED_FIFO);

   /* Find out what the current priority is. */
   sched_getparam(0, &param);

   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, &param);

   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);
}

Classification:

POSIX 1003.1 PS

Safety:
Cancellation point No
Interrupt handler No
Signal handler Yes
Thread Yes

Caveats:

Currently, the implementation of sched_getparam() isn't 100% POSIX 1003.1-1996. The sched_getparam() function returns the scheduling parameters for thread 1 in the process pid, or for the calling thread if pid is 0.

If you depend on this in new code, it will not be portable. POSIX 1003.1 says sched_getparam() should return -1 and set errno to EPERM in a multithreaded application.

See also:

errno, getprio(), sched_get_priority_max(), sched_get_priority_min(), sched_getscheduler(), sched_param, sched_setparam(), sched_setscheduler(), sched_yield(), setprio()


[Previous] [Contents] [Index] [Next]