sched_getparam()

Получить текущие параметры планирования процесса

Прототип:

#include <sched.h>
int sched_getparam( pid_t pid,
struct sched_param *param );

Аргументы:

pid
ID процесса, параметры планирования которого необходимо получить или 0, чтобы получить их для текущего процесса.
param
Указатель на struct sched_param, который функция заполняет параметрами планирования.

Библиотека:

libc

Описание:

Функция sched_getparam() получает текущие параметры планирования (включая исходный и текущий приоритеты) процесса, указанного pid, и помещает их в struct sched_param, на который указывает param.

Если pid равен нулю, функция возвращает параметры для вызывающего процесса.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EPERM
Вызывающий процесс не имеет достаточных привилегий для получения параметров планирования.
ESRCH
Процесс pid не существует.

Примеры:

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

Классификация:

POSIX 1003.1 Process Scheduling

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Предостережения:

В многопоточной программе sched_getparam() возвращает параметры планирования для потока 1 в процессе pid или для вызывающего потока, если pid равен 0.

Тематические ссылки:

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




Предыдущий раздел: Описание API системной библиотеки