diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.h')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.h | 408 |
1 files changed, 0 insertions, 408 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.h b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.h deleted file mode 100644 index e58d8a3b8ec..00000000000 --- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils_T.h +++ /dev/null @@ -1,408 +0,0 @@ -/* -*- C++ -*- */ -// $Id$ - -// ============================================================================ -// -// = LIBRARY -// orbsvcs -// -// = FILENAME -// Reconfig_Scheduler_Utils_T.h -// -// = AUTHOR -// Chris Gill <cdgill@cs.wustl.edu> -// -// ============================================================================ - -#ifndef TAO_RECONFIG_SCHED_UTILS_T_H -#define TAO_RECONFIG_SCHED_UTILS_T_H - -#include "ace/inc_user_config.h" - -// The templatized method parameters needed by this file are -// hopelessly broken on pre-2.8 versions of g++ -#if (! defined (__GNUC__)) || (__GNUC__ > 2) || \ -(__GNUC__ == 2 && defined (__GNUC_MINOR__) && __GNUC_MINOR__ >= 8) - -#include "Reconfig_Sched_Utils.h" - -#if !defined (ACE_LACKS_PRAGMA_ONCE) -# pragma once -#endif /* ACE_LACKS_PRAGMA_ONCE */ - -////////////////////////////////////////// -// Reconfig Sched Entry Visitor classes // -////////////////////////////////////////// - -template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> -class TAO_RSE_Dependency_Visitor : - public TAO_Reconfig_Sched_Entry_Visitor - // = TITLE - // A base class for scheduler entry visitors that use a - // dependency map to traverse a dependency graph over entries. - // - // = DESCRIPTION - // This class hold the maps and a constructor that - // derived classes may call to pass them in. -{ -public: - - typedef ACE_Hash_Map_Manager_Ex<RtecScheduler::handle_t, - RtecScheduler::Dependency_Set*, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_LOCK> DEPENDENCY_SET_MAP; - // Type of map used for O(1) lookup of RT_Info - // dependency sets by caller or called handle. - - typedef ACE_Hash_Map_Manager_Ex<RtecScheduler::handle_t, - RtecScheduler::RT_Info*, - ACE_Hash<RtecScheduler::handle_t>, - ACE_Equal_To<RtecScheduler::handle_t>, - ACE_LOCK> RT_INFO_MAP; - // Type of map used for O(1) lookup of RT_Infos by their handles. - - TAO_RSE_Dependency_Visitor - (DEPENDENCY_SET_MAP & dependency_map, - RT_INFO_MAP & rt_info_map); - // Constructor. - - virtual int visit (TAO_Reconfig_Scheduler_Entry &); - // Visit a Reconfig Scheduler Entry. This method calls - // protected hook methods that can be overridden by - // derived classes, according to the Template Method - // design pattern. - -protected: - - virtual int unconditional_action (TAO_Reconfig_Scheduler_Entry &rse); - // Performs an unconditional action when the entry is first reached. - // Returns 0 for success, and -1 if an error occurred. - - virtual int precondition (TAO_Reconfig_Scheduler_Entry &rse); - // Tests whether or not any conditional actions should be taken for - // the entry. Returns 0 if the actions should be applied, 1 if the - // entry should be left alone, and -1 if an error occurred. - - virtual int prefix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Performs an action on the entry prior to visiting any of - // its successors. Returns 0 on success and -1 on error. - - virtual int pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry, - TAO_Reconfig_Scheduler_Entry &successor, - const RtecScheduler::Dependency_Info &di); - // Performs an action on a successor entry prior to visiting - // it. Returns 0 if the successor should be visited recursively, - // 1 if the successor should not be visited, and -1 on error. - - virtual int postfix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Performs an action on the entry after visiting all of - // its successors. Returns 0 on success and -1 on error. - - DEPENDENCY_SET_MAP & dependency_map_; - // Map of dependencies between RT_Info handles. - - RT_INFO_MAP & rt_info_map_; - // Map of handles into RT_Infos. - -}; - - - -template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> -class TAO_RSE_DFS_Visitor : - public TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK> - // = TITLE - // A scheduler entry visitor that marks nodes with DFS start - // and finish times. - // - // = DESCRIPTION - // This class does DFS traversal marking of each node it visits, - // as appropriate according to DFS state markers. -{ -public: - - TAO_RSE_DFS_Visitor - (ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::DEPENDENCY_SET_MAP & dependency_map, - ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::RT_INFO_MAP & rt_info_map); - // Constructor. - -protected: - virtual int precondition (TAO_Reconfig_Scheduler_Entry &rse); - // Makes sure the entry has not previously been visited in forward DFS. - // Returns 0 if the actions should be applied, 1 if the entry - // should be left alone, and -1 if an error occurred. - - virtual int prefix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Marks entry as forward visited and sets its forward DFS start - // time, prior to visiting any of its successors. Returns 0 on - // success and -1 on error. - - virtual int pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry, - TAO_Reconfig_Scheduler_Entry &successor, - const RtecScheduler::Dependency_Info &di); - // Marks whether or not successor is a thread delineator prior to - // visiting it. Returns 0 on success and -1 on error. - - virtual int postfix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Marks entry as forward finished and sets its forward DFS finish - // time, after all of its successors have been visited. Returns 0 - // on success and -1 on error. - -private: - int DFS_time_; - // Keeps track of DFS start and finish times. - -}; - - -template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> -class TAO_RSE_SCC_Visitor : - public TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK> - // = TITLE - // A scheduler entry visitor that checks for cycles in the graph. - // - // = DESCRIPTION - // This class, when applied to nodes in the transpose of the DFS graph as - // ordered for the strongly connected components algorithm, will - // flag cycles in the graph. -{ -public: - - TAO_RSE_SCC_Visitor - (ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::DEPENDENCY_SET_MAP & dependency_map, - ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::RT_INFO_MAP & rt_info_map); - // Constructor. - - int number_of_cycles (void); - // Accessor for number of cycles detected in traversal. - - int in_a_cycle (void); - // Accessor for whether or not the recursion is within a previously - // detected cycle. - - void in_a_cycle (int); - // Mutator for whether or not the recursion is within a previously - // detected cycle. - -protected: - virtual int unconditional_action (TAO_Reconfig_Scheduler_Entry &rse); - // If the entry is a thread delineator, sets its effective period and - // execution multiplier from the values in its corresponding RT_Info. - // Returns 0 for success, and -1 if an error occurred. - - virtual int precondition (TAO_Reconfig_Scheduler_Entry &rse); - // Makes sure the entry has not previously been visited in the - // reverse DFS (call graph transpose) direction. Returns 0 if - // the actions should be applied, 1 if the entry should be left - // alone, and -1 if an error occurred. - - virtual int prefix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Marks reverse status as visited and sets reverse start time for - // entry, prior to visiting any of its successors. Returns 0 on - // success and -1 on error. - - virtual int pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry, - TAO_Reconfig_Scheduler_Entry &successor, - const RtecScheduler::Dependency_Info &di); - // Checks reverse status of each successor. For any that have not - // been previously visited, it complains about the entry and - // successor being part of a cycle, stores the fact that a cycle was - // detected, and maintains a count of the total number of cycles - // (strongly connected components). Returns 0 on success and -1 on - // an error (finding a cycle is not considered an error, at least as - // far as this method is concerned). - - virtual int postfix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Sets the entry's reverse finish time and marks it as finished in - // the reverse DFS traversal, after visiting all of its successors. - // Returns 0 on success and -1 on error. - -private: - int DFS_time_; - // Keeps track of DFS start and finish times. - - int number_of_cycles_; - // Keeps track of DFS start and finish times. - - int in_a_cycle_; - // Indicates whether or not the recursion is - // currently within a previously discovered cycle. -}; - - -template <class RECONFIG_SCHED_STRATEGY, class ACE_LOCK> -class TAO_RSE_Propagation_Visitor : - public TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK> - // = TITLE - // A scheduler entry visitor that propagates effective periods and - // execution time multipliers between nodes in a topologically - // ordered graph. - // - // = DESCRIPTION - // This class computes the effective period of each node, according to - // its dependencies, and the period and threads it specifies. -{ -public: - - TAO_RSE_Propagation_Visitor - (ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::DEPENDENCY_SET_MAP & dependency_map, - ACE_TYPENAME TAO_RSE_Dependency_Visitor<RECONFIG_SCHED_STRATEGY, ACE_LOCK>::RT_INFO_MAP & rt_info_map); - // Constructor. - - int unresolved_locals (void); - // Accessor for number of nodes with unresolved local dependencies. - - void unresolved_locals (int); - // Mutator for numberof nodes with unresolved local dependencies. - - int unresolved_remotes (void); - // Accessor for number of nodes with unresolved remote dependencies. - - void unresolved_remotes (int); - // Mutator for number of nodes with unresolved remote dependencies. - - int thread_specification_errors (void); - // Accessor for number of nodes with thread specification errors. - - void thread_specification_errors (int); - // Mutator for number of nodes with thread specification errors. - -protected: - virtual int prefix_action (TAO_Reconfig_Scheduler_Entry &rse); - // Tests the entry for possibly having unresolved remote or local - // dependencies prior to visiting any of its successors. Returns 0 - // on success and -1 on error (having unresolved remote or local - // dependencies is not considered an error, at least for this - // method). - - virtual int pre_recurse_action (TAO_Reconfig_Scheduler_Entry &entry, - TAO_Reconfig_Scheduler_Entry &successor, - const RtecScheduler::Dependency_Info &di); - // Propagates effective period and execution time multiplier from - // entry to successor prior to visiting successor. Returns 1 on - // success (to prevent recursion on the successor), and -1 on error. - -private: - - int unresolved_locals_; - // Number of nodes with unresolved local dependencies. - - int unresolved_remotes_; - // Number of nodes with unresolved remote dependencies. - - int thread_specification_errors_; - // Number of nodes with thread specification errors. -}; - -template <class RECONFIG_SCHED_STRATEGY> -class TAO_RSE_Priority_Visitor : - public TAO_Reconfig_Sched_Entry_Visitor - // = TITLE - // A scheduler entry visitor that assigns static priority and - // subpriority values to entries in an array already sorted in - // static <priority, subpriority> order. - // - // = DESCRIPTION - // The visitor uses the parameterized strategy type to determine - // priority and subpriority boundaries. -{ -public: - - TAO_RSE_Priority_Visitor (RtecScheduler::handle_t handles, - TAO_Reconfig_Scheduler_Entry ** entry_ptr_array); - // Constructor. - - virtual int visit (TAO_Reconfig_Scheduler_Entry &); - // Visit a Reconfig Scheduler Entry. This method - // assigns a priority and subpriority value to each - // entry. Priorities are assigned in increasing value - // order, with lower numbers corresponding to higher - // priorities. Returns -1 on error, 1 if a new priority - // was assigned, or 0 otherwise. - - int finish (); - // Finishes scheduler entry priority assignment by iterating over the - // remaining entries in the last subpriority level, and adjusting - // their subpriorities. - -private: - - TAO_Reconfig_Scheduler_Entry *previous_entry_; - // Pointer to previous entry most recently seen in the iteration. - - TAO_Reconfig_Scheduler_Entry **first_subpriority_entry_; - // Pointer to first subpriority entry in the priority level. - - RtecScheduler::Preemption_Priority_t priority_; - // Current priority value. - - RtecScheduler::Preemption_Subpriority_t subpriority_; - // Current subpriority value. - - RtecScheduler::OS_Priority os_priority_; - // Current OS (thread) priority value. - - RtecScheduler::handle_t handles_; - // Number of handles in the entry pointer array. - - TAO_Reconfig_Scheduler_Entry ** entry_ptr_array_; - // An array of pointers to entries we will be visiting. -}; - -template <class RECONFIG_SCHED_STRATEGY> -class TAO_RSE_Utilization_Visitor : - public TAO_Reconfig_Sched_Entry_Visitor - // = TITLE - // A scheduler entry visitor that accumulates utilization separately - // for the critical operations and the non-critical operations. - // - // = DESCRIPTION - // The visitor uses the parameterized strategy type to determine - // whether or not a given operation is critical. -{ -public: - - TAO_RSE_Utilization_Visitor (); - // Constructor. - - virtual int visit (TAO_Reconfig_Scheduler_Entry &); - // Visit a Reconfig Scheduler Entry. This method - // determines the utilization by the entry, and - // adds it to the critical or non-critical utilization, - // depending on whether or not the strategy says the - // operation is critical. - - CORBA::Double critical_utilization (); - // Accessor for utilization by critical operations. - - CORBA::Double noncritical_utilization (); - // Accessor for utilization by noncritical operations. - -private: - - CORBA::Double critical_utilization_; - // Utilization by critical operations. - - CORBA::Double noncritical_utilization_; - // Utilization by noncritical operations. -}; - - - -#if defined (__ACE_INLINE__) -#include "Reconfig_Sched_Utils_T.i" -#endif /* __ACE_INLINE__ */ - - -#if defined (ACE_TEMPLATES_REQUIRE_SOURCE) -#include "Reconfig_Sched_Utils_T.cpp" -#endif /* ACE_TEMPLATES_REQUIRE_SOURCE */ - -#if defined (ACE_TEMPLATES_REQUIRE_PRAGMA) -#pragma implementation ("Reconfig_Sched_Utils_T.cpp") -#endif /* ACE_TEMPLATES_REQUIRE_PRAGMA */ - -#endif /* __GNUC__ */ - -#endif /* TAO_RECONFIG_SCHED_UTILS_T_H */ |