pthread_attr_setschedpolicy(3P)

pthread_attr_setschedpolicy, pthread_attr_getschedpolicy - manage scheduling policy attributes

As shipped in IRIX 6.5.19. Unchanged since IRIX 6.5.

NAME
     pthread_attr_setschedpolicy, pthread_attr_getschedpolicy - manage
     scheduling policy attributes

C SYNOPSIS
     #include <pthread.h>

     int pthread_attr_setschedpolicy(pthread_attr_t *attr, int policy);

     int pthread_attr_getschedpolicy(const pthread_attr_t *attr,
          int *opolicy);

DESCRIPTION
     A scheduling policy defines how threads are selected to run and for how
     long they run before an alternative thread may be chosen to run.  There
     are four policies:  SCHED_FIFO (first-in-first-out), SCHED_RR (round-
     robin), SCHED_TS (time-share) and SCHED_OTHER.  The default scheduling
     policy attribute value for POSIX threads is SCHED_RR.  Each policy uses
     thread priorities [see pthread_attr_setschedparam()] as part of their
     selection criteria.  Scheduling scope [see pthread_attr_setscope()]
     determines the set of threads from which a selection is made using a
     given policy.

     Thread priorities are viewed as separate queues, managed according to the
     thread scheduling policy.  A thread's position on the queue determines
     how likely it is to be run (if it is runnable), woken up (if it is
     waiting and an event arrives), or preempted (if it is running).

     SCHED_FIFO     Allows a thread (once selected) to run until it blocks,
                    exits, or there is a higher priority thread that can run.
                    The priority queues are managed as follows:

                    o   When a thread is preempted it moves to the head of its
                        priority queue.

                    o   When a blocked thread becomes runnable it moves to the
                        tail of its priority queue.

                    o   When a thread has its scheduling priority changed [see
                        pthread_setschedparam(),
                        pthread_mutexattr_setprotocol()] it moves to the tail
                        of the new priority queue.

                    o   When a thread has its scheduling policy changed it
                        moves to the tail of its priority queue.

                    o   When a thread calls sched_yield() it moves to the tail
                        of its priority queue.

     SCHED_RR       Behaves like SCHED_FIFO with the addition that the thread
                    will automatically move to the tail of its priority queue
                    when it has been running for a fixed period of time [see
                    sched_rr_get_interval()]calledaquantum.  This period is
                    reset when it expires and whenever the thread blocks; if
                    the thread is preempted it resumes execution with the
                    unexpired portion of its scheduling period.

     SCHED_TS

     SCHED_OTHER    These two policies are equivalent and for POSIX threads
                    they behave the same as SCHED_RR.

     The pthread_attr_setschedpolicy() function sets the thread scheduling
     policy attribute in the object attr, to the value of policy.  In order to
     use the scheduling policy from the attribute object the inherit attribute
     must be set to PTHREAD_EXPLICIT_SCHED (which is the default) [see
     pthread_attr_setinheritsched()].  The scheduling policy for the attribute
     object attr, is retrieved by pthread_attr_getschedpolicy() in the opolicy
     parameter.

     The policies above may also be used to indirectly change the scheduling
     of process scope threads [see pthread_attr_setscope()] using the POSIX
     process scheduling interfaces [see sched_setscheduler() and
     sched_setparam()].

     For an overview of the POSIX thread scheduling model see pthreads(3P).

DIAGNOSTICS
     On success pthread_attr_setschedpolicy() returns zero; otherwise an error
     number is returned:

     [EINVAL]       The value of policy is not SCHED_FIFO, SCHED_RR, SCHED_TS,
                    or SCHED_OTHER.

     pthread_attr_getschedpolicy() always returns zero.

SEE ALSO
     pthread_attr_setinheritsched(3P), pthread_attr_setschedparam(3P),
     pthread_attr_setscope(3P), pthread_mutex_init(3P),
     pthread_setschedparam(3P), pthreads(5), sched_rr_get_interval(3P),
     sched_setparam(2), sched_setscheduler(2), sched_yield(2).