## NAME

ACE_Sched_Params - Container for scheduling-related parameters.

## SYNOPSIS

    #include <ACE/Sched_Params.h>

    class ACE_Sched_Params
    {
      public:
        typedef int Policy;
        ACE_Sched_Params (
            const Policy policy,
            const ACE_Sched_Priority priority,
            const int scope = ACE_SCOPE_THREAD,
            const ACE_Time_Value &quantum = ACE_Time_Value::zero
            );
        ~ACE_Sched_Params (void);
        Policy policy (void) const;
        void policy (const Policy);
        ACE_Sched_Priority priority (void) const;
        void priority (const ACE_Sched_Priority);
        int scope (void) const;
        void scope(const int);
        const ACE_Time_Value &quantum (void) const;
        void quantum (const ACE_Time_Value &);
        static int priority_min (
            const Policy,
            const int scope = ACE_SCOPE_THREAD
            );
        static int priority_max (
            const Policy,
            const int scope = ACE_SCOPE_THREAD
            );
        static int next_priority (
            const Policy,
            const int priority,
            const int scope = ACE_SCOPE_THREAD
            );
        static int previous_priority (
            const Policy,
            const int priority,
            const int scope = ACE_SCOPE_THREAD
            );
      private:
        Policy policy_;
        ACE_Sched_Priority priority_;
        int scope_;
        ACE_Time_Value quantum_;
    };

## DESCRIPTION

ACE_Sched_Params are passed via ACE_OS::sched_params () to the OS to specify scheduling parameters. These parameters include scheduling policy, such as FIFO, round-robin, or an implementation-defined "OTHER" (to which many systems default); priority; and a time-slice quantum for round-robin scheduling. A "scope" parameter specifies whether the ACE_Sched_Params applies to the current process, current lightweight process (LWP) (on Solaris), or current thread. Please see the "NOTE" below about not all combinations of parameters being legal on a particular platform.

For the case of thread priorities, it is intended that ACE_OS::sched_params () usually be called from main () before any threads have been spawned. If spawned threads inherit their parent's priority (I think that's the default behavior for all of our platforms), then this sets the default base priority. Individual thread priorities can be adjusted as usual using ACE_OS::thr_prio () or via the ACE_Thread interface. See the parameter descriptions in the private: section below.

NOTE: this class does not do any checking of parameters. It is just a container class. If it is constructed with values that are not supported on a platform, the call to ACE_OS::sched_params () will fail by returning -1 with EINVAL (available through ACE_OS::last_error ()).

## Initialization and termination methods.

    ACE_Sched_Params (
        const Policy policy,
        const ACE_Sched_Priority priority,
        const int scope = ACE_SCOPE_THREAD,
        const ACE_Time_Value &quantum = ACE_Time_Value::zero
        );

Constructor.

    ~ACE_Sched_Params (void);

Termination.

## Get/Set methods:

## Get/Set policy

    Policy policy (void) const;

    void policy (const Policy);

## Get/Set priority.

    ACE_Sched_Priority priority (void) const;

    void priority (const ACE_Sched_Priority);

## Get/Set scope.

    int scope (void) const;

    void scope(const int);

## Get/Set quantum.

    const ACE_Time_Value &quantum (void) const;

    void quantum (const ACE_Time_Value &);

## Accessors for OS-specific priorities.

These return priority values for ACE_SCHED_OTHER if the Policy value is invalid.

    static int priority_min (
        const Policy,
        const int scope = ACE_SCOPE_THREAD
        );

    static int priority_max (
        const Policy,
        const int scope = ACE_SCOPE_THREAD
        );

    static int next_priority (
        const Policy,
        const int priority,
        const int scope = ACE_SCOPE_THREAD
        );

The next higher priority. "Higher" refers to scheduling priority, not to the priority value itself. (On some platforms, higher scheduling priority is indicated by a lower priority value.) If "priority" is already the highest priority (for the specified policy), then it is returned.

    static int previous_priority (
        const Policy,
        const int priority,
        const int scope = ACE_SCOPE_THREAD
        );

The previous, lower priority. "Lower" refers to scheduling priority, not to the priority value itself. (On some platforms, lower scheduling priority is indicated by a higher priority value.) If "priority" is already the lowest priority (for the specified policy), then it is returned.

## CREATION DATE

28 January 1997

## AUTHOR

David Levine and Carlos O'Ryan

## LIBRARY

ACE