| RTPRIO(2) | System Calls Manual | RTPRIO(2) |
rtprio,
rtprio_thread — examine or
modify realtime or idle priority
Standard C Library (libc, -lc)
#include
<sys/types.h>
#include <sys/rtprio.h>
int
rtprio(int
function, pid_t
pid, struct rtprio
*rtp);
int
rtprio_thread(int
function, lwpid_t
lwpid, struct rtprio
*rtp);
The
rtprio()
system call is used to lookup or change the realtime or idle priority of a
process, or the calling thread. The rtprio_thread()
system call is used to lookup or change the realtime or idle priority of a
thread.
The function argument specifies the operation to be performed. RTP_LOOKUP to lookup the current priority, and RTP_SET to set the priority.
For the
rtprio()
system call, the pid argument specifies the process to
operate on, 0 for the calling thread. When pid is
non-zero, the system call reports the highest priority in the process, or
sets all threads' priority in the process, depending on value of the
function argument.
For the
rtprio_thread()
system call, the lwpid specifies the thread to operate
on, 0 for the calling thread.
The *rtp argument is a pointer to a struct rtprio which is used to specify the priority and priority type. This structure has the following form:
struct rtprio {
u_short type;
u_short prio;
};
The value of the type field may be
RTP_PRIO_REALTIME for realtime priorities, RTP_PRIO_NORMAL for normal
priorities, and RTP_PRIO_IDLE for idle priorities. The priority specified by
the prio field ranges between 0 and
RTP_PRIO_MAX (usually 31). 0 is the highest possible
priority.
Realtime and idle priority is inherited through fork() and exec().
A realtime thread can only be preempted by a thread of equal or higher priority, or by an interrupt; idle priority threads will run only when no other real/normal priority thread is runnable. Higher real/idle priority threads preempt lower real/idle priority threads. Threads of equal real/idle priority are run round-robin.
The rtprio() and
rtprio_thread() functions return the value 0
if successful; otherwise the value -1 is returned and the global
variable errno is set to indicate the error.
The rtprio() and
rtprio_thread() system calls will fail if:
EFAULT]rtprio() or
rtprio_thread() was invalid.EINVAL]EPERM]ESRCH]nice(1), ps(1), rtprio(1), setpriority(2), nice(3), renice(8), p_cansee(9)
The original author was Henrik Vestergaard
Draboel
<hvd@terry.ping.dk>.
This implementation in FreeBSD was substantially
rewritten by David Greenman. The
rtprio_thread() system call was implemented by
David Xu.
| December 27, 2011 | Debian |