| .\" Copyright (C) Tom Bjorkholm & Markus Kuhn, 1996 |
| .\" |
| .\" %%%LICENSE_START(GPLv2+_DOC_FULL) |
| .\" This is free documentation; you can redistribute it and/or |
| .\" modify it under the terms of the GNU General Public License as |
| .\" published by the Free Software Foundation; either version 2 of |
| .\" the License, or (at your option) any later version. |
| .\" |
| .\" The GNU General Public License's references to "object code" |
| .\" and "executables" are to be interpreted as the output of any |
| .\" document formatting or typesetting system, including |
| .\" intermediate and printed output. |
| .\" |
| .\" This manual is distributed in the hope that it will be useful, |
| .\" but WITHOUT ANY WARRANTY; without even the implied warranty of |
| .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| .\" GNU General Public License for more details. |
| .\" |
| .\" You should have received a copy of the GNU General Public |
| .\" License along with this manual; if not, see |
| .\" <http://www.gnu.org/licenses/>. |
| .\" %%%LICENSE_END |
| .\" |
| .\" 1996-04-01 Tom Bjorkholm <tomb@mydata.se> |
| .\" First version written |
| .\" 1996-04-10 Markus Kuhn <mskuhn@cip.informatik.uni-erlangen.de> |
| .\" revision |
| .\" |
| .TH SCHED_RR_GET_INTERVAL 2 2017-09-15 "Linux" "Linux Programmer's Manual" |
| .SH NAME |
| sched_rr_get_interval \- get the SCHED_RR interval for the named process |
| .SH SYNOPSIS |
| .B #include <sched.h> |
| .PP |
| .BI "int sched_rr_get_interval(pid_t " pid ", struct timespec *" tp ); |
| .SH DESCRIPTION |
| .BR sched_rr_get_interval () |
| writes into the |
| .I timespec |
| structure pointed to by |
| .I tp |
| the round-robin time quantum for the process identified by |
| .IR pid . |
| The specified process should be running under the |
| .B SCHED_RR |
| scheduling policy. |
| .PP |
| The |
| .I timespec |
| structure has the following form: |
| .PP |
| .in +4n |
| .EX |
| struct timespec { |
| time_t tv_sec; /* seconds */ |
| long tv_nsec; /* nanoseconds */ |
| }; |
| .EE |
| .in |
| .PP |
| If |
| .I pid |
| is zero, the time quantum for the calling process is written into |
| .IR *tp . |
| .\" FIXME . On Linux, sched_rr_get_interval() |
| .\" returns the timeslice for SCHED_OTHER processes -- this timeslice |
| .\" is influenced by the nice value. |
| .\" For SCHED_FIFO processes, this always returns 0. |
| .\" |
| .\" The round-robin time quantum value is not alterable under Linux |
| .\" 1.3.81. |
| .\" |
| .SH RETURN VALUE |
| On success, |
| .BR sched_rr_get_interval () |
| returns 0. |
| On error, \-1 is returned, and |
| .I errno |
| is set appropriately. |
| .SH ERRORS |
| .TP |
| .B EFAULT |
| Problem with copying information to user space. |
| .TP |
| .B EINVAL |
| Invalid pid. |
| .TP |
| .B ENOSYS |
| The system call is not yet implemented (only on rather old kernels). |
| .TP |
| .B ESRCH |
| Could not find a process with the ID |
| .IR pid . |
| .SH CONFORMING TO |
| POSIX.1-2001, POSIX.1-2008. |
| .SH NOTES |
| POSIX systems on which |
| .BR sched_rr_get_interval () |
| is available define |
| .B _POSIX_PRIORITY_SCHEDULING |
| in |
| .IR <unistd.h> . |
| .SS Linux notes |
| POSIX does not specify any mechanism for controlling the size of the |
| round-robin time quantum. |
| Older Linux kernels provide a (nonportable) method of doing this. |
| The quantum can be controlled by adjusting the process's nice value (see |
| .BR setpriority (2)). |
| Assigning a negative (i.e., high) nice value results in a longer quantum; |
| assigning a positive (i.e., low) nice value results in a shorter quantum. |
| The default quantum is 0.1 seconds; |
| the degree to which changing the nice value affects the |
| quantum has varied somewhat across kernel versions. |
| This method of adjusting the quantum was removed |
| .\" commit a4ec24b48ddef1e93f7578be53270f0b95ad666c |
| starting with Linux 2.6.24. |
| .PP |
| Linux 3.9 added |
| .\" commit ce0dbbbb30aee6a835511d5be446462388ba9eee |
| a new mechanism for adjusting (and viewing) the |
| .BR SCHED_RR |
| quantum: the |
| .I /proc/sys/kernel/sched_rr_timeslice_ms |
| file exposes the quantum as a millisecond value, whose default is 100. |
| Writing 0 to this file resets the quantum to the default value. |
| .\" .SH BUGS |
| .\" As of Linux 1.3.81 |
| .\" .BR sched_rr_get_interval () |
| .\" returns with error |
| .\" ENOSYS, because SCHED_RR has not yet been fully implemented and tested |
| .\" properly. |
| .SH SEE ALSO |
| .BR sched (7) |