.\" 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 2015-08-08 "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>
.sp
.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.

The
.I timespec
structure has the following form:

.in +4n
.nf
struct timespec {
    time_t tv_sec;    /* seconds */
    long   tv_nsec;   /* nanoseconds */
};
.fi
.in

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.

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)
