VMS Help  —  POSIX Threads, PTHREAD routines, pthread_setschedparam
    Changes a thread's scheduling policy and scheduling parameters.

1  –  C Binding

    #include <pthread.h>

    int
    pthread_setschedparam (
             pthread_t   thread,
             int   policy,
             const struct sched_param   *param);

2  –  Arguments

 thread

    Thread whose scheduling policy and parameters are to be changed.

 policy

    New scheduling policy value for the thread specified in thread.
    The following are valid values:

       SCHED_BG_NP
       SCHED_FG_NP
       SCHED_FIFO
       SCHED_OTHER
       SCHED_RR

 param

    New values of the scheduling parameters associated with the
    scheduling policy for the thread specified in thread. Valid
    values for the sched_priority field of a sched_param structure
    depend on the chosen scheduling policy. Use the POSIX routines
    sched_get_priority_min() or sched_get_priority_max()  to
    determine the low and high limits of each policy.

    Additionally, the Threads Librray provides nonportable priority
    range constants, as follows:

    Low              High

    PRI_FIFO_MIN     PRI_FIFO_MAX
    PRI_RR_MIN       PRI_RR_MAX
    PRI_OTHER_MIN    PRI_OTHER_MAX
    PRI_FG_MIN_NP    PRI_FG_MAX_NP
    PRI_BG_MIN_NP    PRI_BG_MAX_NP

    The default priority varies by platform. On Tru64 UNIX, the
    default is 19 (that is, the POSIX priority of a normal timeshare
    process). On other platforms the default priority is the midpoint
    between PRI_FG_MIN_NP and PRI_FG_MAX_NP.

3  –  Description

    This routine changes both the current scheduling policy and
    associated scheduling parameters of the thread specified by
    thread to the policy and associated parameters provided in policy
    and param, respectively.

    All currently implemented scheduling policies have one scheduling
    parameter called sched_priority. For the policy you choose, you
    must specify an appropriate value in the sched_priority field of
    the sched_param structure.

    Changing the scheduling policy or priority, or both, of a thread
    can cause it either to start executing or to be preempted by
    another thread. A thread changes its own scheduling policy and
    priority by using the handle returned by the pthread_self()
    routine.

    This routine differs from pthread_attr_setschedpolicy() and
    pthread_attr_setschedparam(), in that those routines set the
    scheduling policy and parameter attributes that are used to
    establish the scheduling priority and scheduling policy of a
    new thread when it is created. However, this routine changes the
    scheduling policy and parameters of an existing thread.

4  –  Return Values

    If an error condition occurs, no scheduling policy or parameters
    are changed for the target thread, and this routine returns
    an integer value indicating the type of error. Possible return
    values are as follows:

    Return      Description

    0           Successful completion.
    [EINVAL]    The value specified by policy or param is invalid.
    [ENOTSUP]   An attempt was made to set the scheduling policy or a
                parameter to an unsupported value.
    [EPERM]     The caller does not have the appropriate privileges
                to set the scheduling policy or parameters of the
                specified thread.
    [ESRCH]     The value specified by thread does not refer to an
                existing thread.

5  –  Associated Routines

       pthread_attr_setschedparam()
       pthread_attr_setschedpolicy()
       pthread_create()
       pthread_self()
       sched_yield()
Close Help