summaryrefslogtreecommitdiff
path: root/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
diff options
context:
space:
mode:
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h')
-rw-r--r--TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h288
1 files changed, 0 insertions, 288 deletions
diff --git a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h b/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
deleted file mode 100644
index 472dc5f6cb1..00000000000
--- a/TAO/orbsvcs/orbsvcs/Sched/Reconfig_Sched_Utils.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/* -*- C++ -*- */
-// $Id$
-
-// ============================================================================
-//
-// = LIBRARY
-// orbsvcs
-//
-// = FILENAME
-// Reconfig_Scheduler_Utils.h
-//
-// = AUTHOR
-// Chris Gill <cdgill@cs.wustl.edu>
-//
-// ============================================================================
-
-#ifndef TAO_RECONFIG_SCHED_UTILS_H
-#define TAO_RECONFIG_SCHED_UTILS_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 "orbsvcs/Scheduler_Factory.h"
-#include "orbsvcs/RtecSchedulerS.h"
-
-#if !defined (ACE_LACKS_PRAGMA_ONCE)
-# pragma once
-#endif /* ACE_LACKS_PRAGMA_ONCE */
-
-
-class TAO_ORBSVCS_Export TAO_Reconfig_Scheduler_Entry
- // = TITLE
- // An implementation class used to store interim scheduling results
- // such as DFS finishing order, etc.
- //
- // = DESCRIPTION
- // This class improves the performance of the Reconfig Scheduler
- // by saving information from one computation for use in other
- // computations, and simplifies the implementation logic.
-{
-public:
-
- // Info for DFS traversal, topological sort of call graph.
- enum DFS_Status {NOT_VISITED, VISITED, FINISHED};
-
- TAO_Reconfig_Scheduler_Entry (RtecScheduler::RT_Info &rt_info);
- // Constructor.
-
- RtecScheduler::RT_Info & orig_rt_info_data (void);
- // Accessor for stored original RT_Info data.
-
- void orig_rt_info_data (RtecScheduler::RT_Info &data);
- // Mutator for stored original RT_Info data.
-
- RtecScheduler::RT_Info * actual_rt_info ();
- // Accessor for actual RT_Info.
-
- void actual_rt_info (RtecScheduler::RT_Info *);
- // Mutator for actual RT_Info.
-
- long fwd_discovered () const;
- // Accessor for when the node was discovered in forward DFS traversal.
-
- void fwd_discovered (long l);
- // Mutator for when the node was discovered in forward DFS traversal.
-
- long rev_discovered () const;
- // Accessor for when the node was discovered in reverse DFS traversal.
-
- void rev_discovered (long l);
- // Mutator for when the node was discovered in reverse DFS traversal.
-
- long fwd_finished () const;
- // Accessor for when the node was finished in forward DFS traversal.
-
- void fwd_finished (long l);
- // Mutator for when the node was finished in forward DFS traversal.
-
- long rev_finished () const;
- // Accessor for when the node was finished in reverse DFS traversal.
-
- void rev_finished (long l);
- // Mutator for when the node was finished in reverse DFS traversal.
-
- DFS_Status fwd_dfs_status () const;
- // Accessor for forward DFS traversal status of the node.
-
- DFS_Status rev_dfs_status () const;
- // Accessor for reverse DFS traversal status of the node.
-
- void fwd_dfs_status (DFS_Status ds);
- // Mutator for forward DFS traversal status of the node.
-
- void rev_dfs_status (DFS_Status ds);
- // Mutator for reverse DFS traversal status of the node.
-
- int is_thread_delineator () const;
- // Accessor for flag indicating whether node is a thread
- // delineator.
-
- void is_thread_delineator (int i);
- // Mutator for flag indicating whether node is a thread
- // delineator.
-
- int has_unresolved_remote_dependencies () const;
- // Accessor for flag indicating whether node has unresolved remote
- // dependencies.
-
- void has_unresolved_remote_dependencies (int i);
- // Mutator for flag indicating whether node has unresolved remote
- // dependencies.
-
- int has_unresolved_local_dependencies () const;
- // Accessor for flag indicating whether node has unresolved local
- // dependencies.
-
- void has_unresolved_local_dependencies (int i);
- // Mutator for flag indicating whether node has unresolved local
- // dependencies.
-
- RtecScheduler::Period_t effective_period ();
- // Accessor for effective period of corresponding RT_Info.
-
- void effective_period (RtecScheduler::Period_t p);
- // Mutator for effective period of corresponding RT_Info.
-
- CORBA::Long effective_exec_multiplier ();
- // Accessor for effective execution time multiplier of corresponding
- // RT_Info.
-
- void effective_exec_multiplier (CORBA::Long l);
- // Mutator for effective execution time multiplier of corresponding
- // RT_Info.
-
-private:
-
- RtecScheduler::RT_Info orig_rt_info_data_;
- // Stores the values of operation characteristics as they were specified
- // in the most recent call to the Reconfig_Scheduler's set () method.
- // That way, the scheduler propagation pass can overwrite RT_Info fields
- // without losing the original values. This is useful when
-
- RtecScheduler::RT_Info *actual_rt_info_;
- // Points to the actual RT_Info to which the schedling entry corresponds.
-
- DFS_Status fwd_dfs_status_;
- // Forward depth-first-search status of the entry.
-
- DFS_Status rev_dfs_status_;
- // Reverse depth-first-search status of the entry.
-
- long fwd_discovered_;
- // Forward depth-first-search discovery order of the entry.
-
- long rev_discovered_;
- // Reverse depth-first-search discovery order of the entry.
-
- long fwd_finished_;
- // Forward depth-first-search completion order of the entry.
-
- long rev_finished_;
- // Reverse depth-first-search completion order of the entry.
-
- int is_thread_delineator_;
- // Flag identifying threads in the call graph.
-
- int has_unresolved_remote_dependencies_;
- // Flag indicating whether or not there are unresolved remote
- // dependencies in the entry's dependency call chain.
-
- int has_unresolved_local_dependencies_;
- // Flag indicating whether or not there are unresolved local
- // dependencies in the entry's dependency call chain.
-
- CORBA::Long effective_exec_multiplier_;
- // Effective execution time multiplier for corresponding RT_Info.
-
- RtecScheduler::Period_t effective_period_;
- // Effective period of corresponding RT_Info.
-
-};
-
-
-class TAO_ORBSVCS_Export TAO_Reconfig_Sched_Entry_Visitor
- // = TITLE
- // An abstract base class for scheduler entry visitors.
- //
- // = DESCRIPTION
- // This class simplifies the reconfig scheduler implementation
- // by giving a common interface for distinct visitors over the
- // scheduling entries.
-{
-public:
-
- virtual int visit (TAO_Reconfig_Scheduler_Entry &) = 0;
- // Visit a Reconfig Scheduler Entry.
-
-};
-
-
-class TAO_ORBSVCS_Export TAO_RSE_Reset_Visitor :
- public TAO_Reconfig_Sched_Entry_Visitor
- // = TITLE
- // A scheduler entry visitor that resets nodes.
- //
- // = DESCRIPTION
- // This class resets each node it visits to an initial state
- // prior to the first DFS traversal for topological sorting.
-{
-public:
-
- TAO_RSE_Reset_Visitor ();
- // Constructor.
-
- virtual int visit (TAO_Reconfig_Scheduler_Entry &rse);
- // Resets the fields in the entry to pre-DFS traversal states.
- // Returns 0 on success and -1 on error.
-};
-
-
-
-
-class TAO_ORBSVCS_Export TAO_MUF_Reconfig_Sched_Strategy
- // = TITLE
- // A scheduling strategy that implements the Maximum
- // Urgency First scheduling algorithm.
- //
- // = DESCRIPTION
- // The strategy assigns static thread and global priority according
- // to operation criticality, assigns static subpriority according to
- // importance and then topological order, and assigns a dispatching
- // configuration with a minimum laxity dispatching queue for each
- // distinct criticality level.
-{
-public:
-
- static int comp_entry_finish_times (const void *first, const void *second);
- // Ordering function to compare the DFS finish times of
- // two task entries, so qsort orders these in topological
- // order, with the higher times *first*.
-
- static int total_priority_comp (const void *, const void *);
- // Ordering function used to qsort an array of
- // TAO_Reconfig_Scheduler_Entry pointers into a total <priority,
- // subpriority> ordering. Returns -1 if the first one is higher, 0
- // if they're the same, and 1 if the second one is higher.
-
- static int compare_priority (TAO_Reconfig_Scheduler_Entry &,
- TAO_Reconfig_Scheduler_Entry &);
- // Compares two entries by priority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
-
- static int compare_subpriority (TAO_Reconfig_Scheduler_Entry &,
- TAO_Reconfig_Scheduler_Entry &);
- // Compares two entries by subpriority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int priority_diff (RtecScheduler::RT_Info &s,
- RtecScheduler::RT_Info &t);
- // Compares two RT_Infos by priority alone. Returns -1 if the
- // first one is higher, 0 if they're the same, and 1 if the second one is higher.
-
- static int is_critical (TAO_Reconfig_Scheduler_Entry &rse);
- // Determines whether or not an entry is critical, based on operation characteristics.
- // returns 1 if critical, 0 if not
-
- static int assign_config (RtecScheduler::Config_Info &,
- TAO_Reconfig_Scheduler_Entry &);
- // Fills in a static dispatch configuration for a priority level, based
- // on the operation characteristics of a representative scheduling entry.
-};
-
-
-#if defined (__ACE_INLINE__)
-#include "Reconfig_Sched_Utils.i"
-#endif /* __ACE_INLINE__ */
-
-// Include the templates here.
-#include "Reconfig_Sched_Utils_T.h"
-
-#endif /* __GNUC__ */
-
-#endif /* TAO_RECONFIG_SCHED_UTILS_H */