sched_getparam()
QNX SDP8.0C Library ReferenceAPIDeveloper
Get the current scheduling parameters 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 scheduling parameters you want to get, or 0 to get them 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 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.
Note:
- In QNX OS, scheduling is associated with threads, not processes, so sched_getparam() gets the scheduling parameters for thread 1 in the process pid, or for the calling thread if pid is 0.
- In order to get the scheduling parameters for a process whose user ID is different from the calling process's real or effective user ID, your process must have the PROCMGR_AID_SCHEDULE ability enabled. For more information, see procmgr_ability().
Returns:
- 0
- Success.
- -1
- An error occurred (errno is set).
Errors:
- EPERM
- The calling process doesn't have sufficient privileges to get the scheduling parameters; see procmgr_ability().
- 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 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);
}
Classification:
Safety: | |
---|---|
Cancellation point | No |
Signal handler | Yes |
Thread | Yes |
Page updated: