sched_getparam()
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.
Returns:
- 0
- Success
- -1
- An error occurred (errno is set).
Errors:
- EPERM
- The calling process doesn't have sufficient privilege to get the scheduling parameters.
- 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 |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
Caveats:
In a multithreaded program, sched_getparam() returns the scheduling parameters for thread 1 in the process pid, or for the calling thread if pid is 0.