diff options
Diffstat (limited to 'ace/Sched_Params.h')
-rw-r--r-- | ace/Sched_Params.h | 76 |
1 files changed, 56 insertions, 20 deletions
diff --git a/ace/Sched_Params.h b/ace/Sched_Params.h index dc823033cba..2faece3bed8 100644 --- a/ace/Sched_Params.h +++ b/ace/Sched_Params.h @@ -7,7 +7,7 @@ // ACE // // = FILENAME -// Scheduling_Params.h +// Sched_Params.h // // = CREATION DATE // 28 January 1997 @@ -17,19 +17,17 @@ // // ============================================================================ -#if !defined (ACE_SCHEDULING_PARAMS_H) -#define ACE_SCHEDULING_PARAMS_H +#if !defined (ACE_SCHED_PARAMS_H) +#define ACE_SCHED_PARAMS_H -#include "ace/Thread_Priority.h" -// for ACE_Time_Value and ACE_SCOPE_PROCESS #include "ace/OS.h" -class ACE_Export ACE_Scheduling_Params +class ACE_Export ACE_Sched_Params // = TITLE // Container for thread scheduling-related parameters. // // = DESCRIPTION - // ACE_Scheduling_Params are passed via + // ACE_Sched_Params are passed via // ACE_OS::set_sched_params () to the OS to specify scheduling // parameters. It is intended that ACE_OS::set_sched_params () // be called from main () before any threads have been spawned. @@ -39,39 +37,77 @@ class ACE_Export ACE_Scheduling_Params // 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::set_sched_params () will fail by returning -1 with EINVAL + // (available through ACE_OS::last_error ()). { public: + typedef int Policy; + // = Initialization and termination methods. - ACE_Scheduling_Params (const ACE_Thread_Priority &priority = ACE_Thread_Priority (), - const int scope = ACE_SCOPE_PROCESS, - const ACE_Time_Value &quantum = ACE_Time_Value::zero); + 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_Scheduling_Params (void); + ~ACE_Sched_Params (void); // Termination. // = Get/Set methods: + // = Get/Set policy + Policy policy (void) const; + void policy (const Policy); + // = Get/Set priority. - const ACE_Thread_Priority &priority (void) const; - void set_priority (const ACE_Thread_Priority &); + ACE_Sched_Priority priority (void) const; + void priority (const ACE_Sched_Priority); // = Get/Set scope. int scope (void) const; - void set_scope(const int); + void scope(const int); // = Get/Set quantum. const ACE_Time_Value &quantum (void) const; - void set_quantum (const ACE_Time_Value &); + void quantum (const ACE_Time_Value &); + + // = Accessors for OS-specific priorities. + static int priority_min (const Policy); + static int priority_max (const Policy); + + static int next_priority (const Policy, const int priority); + // 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.) + + static int previous_priority (const Policy, const int priority); + // 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.) private: - ACE_Thread_Priority priority_; + Policy policy_; + // Scheduling policy. + + ACE_Sched_Priority priority_; // Default <priority_>: sets the priority to be used for newly // spawned threads. int scope_; - // <scope_> must be either ACE_SCOPE_PROCESS or ACE_SCOPE_LWP (which - // is only used on Solaris, and ignored on Win32 and VxWorks) + // <scope_> must one of the following: + // ACE_SCOPE_PROCESS: sets the scheduling policy for the + // process, and the process priority. On some platforms, + // such as Win32, the scheduling policy can _only_ be + // set at process scope. + // ACE_SCOPE_LWP: lightweight process scope, only used with + // Solaris threads. + // ACE_SCOPE_THREAD: sets the scheduling policy for the thread, + // if the OS supports it, such as with Posix threads, and the + // thread priority. ACE_Time_Value quantum_; // The <quantum_> is for time slicing. An ACE_Time_Value of 0 has @@ -83,7 +119,7 @@ private: }; #if defined (__ACE_INLINE__) -#include "ace/Scheduling_Params.i" +#include "ace/Sched_Params.i" #endif /* __ACE_INLINE__ */ -#endif /* ACE_SCHEDULING_PARAMS_H */ +#endif /* ACE_SCHED_PARAMS_H */ |