ОБЗОР
#include <sched.h>int sched_rr_get_interval(pid_t pid, struct timespec * tp);
ОПИСАНИЕ
Вызов sched_rr_get_interval() записывает циклический квант времени процесса pid в структуру timespec, на которую указывает tp. Указанный процесс должен запускаться с политикой выполнения SCHED_RR.Структура timespec описана следующим образом:
struct timespec { time_t tv_sec; /* секунды */ long tv_nsec; /* наносекунды */ };
Если значение pid равно нулю, то в *tp записывается квант времени вызывающего процесса.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном выполнении sched_rr_get_interval() возвращается 0. При ошибке возвращается -1, а значение errno устанавливается соответствующим образом.ОШИБКИ
- EFAULT
- Проблема с копированием информации в пространство пользователя.
- EINVAL
- Неверное значение pid.
- ENOSYS
- Системный вызов ещё не реализован (только в старых ядрах).
- ESRCH
- Не удалось найти процесс с идентификатором, указанном в pid.
СООТВЕТСТВИЕ СТАНДАРТАМ
POSIX.1-2001, POSIX.1-2008.ЗАМЕЧАНИЯ
В системах POSIX, в которых доступен вызов sched_rr_get_interval(), определён _POSIX_PRIORITY_SCHEDULING в <unistd.h>.Замечания, касающиеся Linux
В POSIX не определён какой-либо механизм для контроля размера циклического кванта времени. В старых ядрах Linux для этого создан (непереносимый) метод. Квант можно контролировать подгоняя значение любезности процесса (см. setpriority(2)). Назначение отрицательного (т.е., высокого) значения любезности приведёт к более длинному кванту; назначение положительного (т.е., низкого) значения любезности приведёт к сокращению кванта. Квант по умолчанию равен 0.1 секунды; степень, с которой значение любезности влияет на квант, различается в разных версиях ядра. Данный метод подгонки кванта был удалён начиная с Linux 2.6.24.В Linux 3.9 добавлен новый механизм регулировки (и просмотра) кванта SCHED_RR: файл /proc/sys/kernel/sched_rr_timeslice_ms отражает квант как значение в миллисекундах, по умолчанию равное 100. Запись 0 в этот файл сбрасывает квант в значение по умолчанию.