📄 reconfig_scheduler_t.h
字号:
RtecScheduler::Dependency_Enabled_Type_t enabled
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::UNKNOWN_TASK));
// This method sets the enable state of a dependency between two RT_Infos.
virtual void set_dependency_enable_state_seq (const RtecScheduler::Dependency_Set & dependencies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::UNKNOWN_TASK));
// This method sets the enable state of a sequence of dependencies.
virtual void set_rt_info_enable_state (RtecScheduler::handle_t handle,
RtecScheduler::RT_Info_Enabled_Type_t enabled
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INTERNAL,
RtecScheduler::UNKNOWN_TASK));
// This method enables or disables an RT_Info.
virtual void set_rt_info_enable_state_seq (const RtecScheduler::RT_Info_Enable_State_Pair_Set & pair_set
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INTERNAL,
RtecScheduler::UNKNOWN_TASK));
// This method enables or disables a sequence of RT_Infos.
virtual void compute_scheduling (CORBA::Long minimum_priority,
CORBA::Long maximum_priority,
RtecScheduler::RT_Info_Set_out infos,
RtecScheduler::Dependency_Set_out dependencies,
RtecScheduler::Config_Info_Set_out configs,
RtecScheduler::Scheduling_Anomaly_Set_out anomalies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::UTILIZATION_BOUND_EXCEEDED,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INSUFFICIENT_THREAD_PRIORITY_LEVELS,
RtecScheduler::TASK_COUNT_MISMATCH,
RtecScheduler::INTERNAL,
RtecScheduler::DUPLICATE_NAME));
// If information has been added or changed since the last stable
// schedule was computed, this method causes scheduling information
// to be computed for all registered RT_Infos. If the schedule is
// already stable, this is a no-op.
virtual void recompute_scheduling (CORBA::Long minimum_priority,
CORBA::Long maximum_priority,
RtecScheduler::Scheduling_Anomaly_Set_out anomalies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::UTILIZATION_BOUND_EXCEEDED,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INSUFFICIENT_THREAD_PRIORITY_LEVELS,
RtecScheduler::TASK_COUNT_MISMATCH,
RtecScheduler::INTERNAL,
RtecScheduler::DUPLICATE_NAME));
// Recomputes the scheduling priorities, etc.
virtual void get_rt_info_set (RtecScheduler::RT_Info_Set_out infos
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INTERNAL));
// Returns the set of rt_infos, with their assigned priorities (as
// of the last schedule re-computation).
virtual void get_dependency_set (RtecScheduler::Dependency_Set_out dependencies
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INTERNAL));
// Returns the set of rt_infos, with their assigned priorities (as
// of the last schedule re-computation).
virtual void get_config_info_set (RtecScheduler::Config_Info_Set_out configs
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::INTERNAL));
// Returns the set of config_infos, describing the appropriate
// number, types, and priority levels for the dispatching lanes.
virtual void dispatch_configuration (RtecScheduler::Preemption_Priority_t p_priority,
RtecScheduler::OS_Priority& o_priority,
RtecScheduler::Dispatching_Type_t & d_type
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::NOT_SCHEDULED,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::UNKNOWN_PRIORITY_LEVEL));
// Provides the thread priority and queue type for the given priority level.
virtual RtecScheduler::Preemption_Priority_t last_scheduled_priority (ACE_ENV_SINGLE_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::NOT_SCHEDULED));
// Returns the last priority number assigned to an operation in the
// schedule. The number returned is one less than the total number
// of scheduled priorities. All scheduled priorities range from 0
// to the number returned, inclusive.
virtual void get_config_infos (RtecScheduler::Config_Info_Set_out configs
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::SYNCHRONIZATION_FAILURE,
RtecScheduler::NOT_SCHEDULED));
// Provides the set of Config_Infos associated with the current schedule.
// = Accessors that allow controlled relaxations of encapsulation.
RECONFIG_SCHED_STRATEGY & sched_strategy ();
// Accesses scheduling strategy for the reconfig scheduler.
CONFIG_INFO_MAP & config_info_map ();
// Accesses map for O(1) lookup of Config_Infos by priority level.
long config_info_count ();
// Returns the number of config infos, which is also the number of
// assigned priority levels.
RT_INFO_MAP & rt_info_map ();
// Accesses map for O(1) lookup of RT_Infos by handle.
long rt_info_count ();
// Returns the number of registered RT_Infos.
long rt_info_tuple_count ();
// Returns the number of registered RT_Info tuples.
RT_INFO_TREE & rt_info_tree ();
// Accesses tree for O(log n) lookup of RT_Infos by name.
DEPENDENCY_SET_MAP & calling_dependency_set_map ();
// Accesses map for O(1) lookup of RT_Info dependency
// set by the caller operation's handle.
DEPENDENCY_SET_MAP & called_dependency_set_map ();
// Accesses map for O(1) lookup of RT_Info dependency
// set by the called operation's handle.
int dependency_count ();
// Returns the number of dependencies in the dependency lists of all RT_Infos.
// This is used when traversing the dependency graph.
CORBA::Double noncritical_utilization ();
// Accessor for utilization by noncritical tasks.
CORBA::Double critical_utilization ();
// Accessor for utilization by critical tasks.
CORBA::Double noncritical_utilization_threshold ();
// Accessor for noncritical task utilization threshold.
void noncritical_utilization_threshold (const CORBA::Double &);
// Mutator for noncritical task utilization threshold.
CORBA::Double critical_utilization_threshold ();
// Accessor for critical task utilization threshold.
void critical_utilization_threshold (const CORBA::Double &);
// Mutator for critical task utilization threshold.
protected:
// @@ TO DO: use a memento to save and restore scheduler state without
// breaking encapsulation, particularly of these flags.
// @@ TO DO: Recheck the applicability and fine-grain management of
// these flags. Do these still correctly reflect the phases
// of the computation?
enum Stability_Flags
{
// This should always be zero.
SCHED_ALL_STABLE = 0x00UL,
// Individual stability flags, each of
// which should have a distinct bit value.
// Utilization may need to be recomputed.
SCHED_UTILIZATION_NOT_STABLE = 0x01UL,
// Priorities may need to be recomputed.
SCHED_PRIORITY_NOT_STABLE = 0x02UL,
// Characteristics may need to be repropagated.
SCHED_PROPAGATION_NOT_STABLE = 0x04UL,
// This should be the disjunction of
// all the individual stability flags.
SCHED_NONE_STABLE =
SCHED_UTILIZATION_NOT_STABLE |
SCHED_PRIORITY_NOT_STABLE |
SCHED_PROPAGATION_NOT_STABLE
};
// Flags indicating stability conditions of schedule.
TAO_RT_Info_Ex * create_i (const char * entry_point,
RtecScheduler::handle_t handle,
int ignore_duplicates
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::DUPLICATE_NAME,
RtecScheduler::INTERNAL));
// Internal method to create an RT_Info. If it does not exist, a
// new RT_Info is created and inserted into the schedule, and the
// handle of the new RT_Info is returned. If the RT_Info already
// exists, then if the ignore_duplicates flag is set, the handle
// is simply returned; otherwise, an exception is thrown.
void set_i (TAO_RT_Info_Ex *rt_info,
RtecScheduler::Criticality_t criticality,
RtecScheduler::Time time,
RtecScheduler::Time typical_time,
RtecScheduler::Time cached_time,
RtecScheduler::Period_t period,
RtecScheduler::Importance_t importance,
RtecScheduler::Quantum_t quantum,
CORBA::Long threads,
RtecScheduler::Info_Type_t info_type
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::INTERNAL));
// Internal method to set characteristics of the passed RT_Info.
virtual RtecScheduler::handle_t lookup_i (const char * entry_point
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC((CORBA::SystemException,
RtecScheduler::UNKNOWN_TASK));
// Internal method to look up a handle for an RT_Info, and return
// its handle, or an exception if it's not present.
virtual void priority_i (RtecScheduler::handle_t handle,
RtecScheduler::OS_Priority& o_priority,
RtecScheduler::Preemption_Subpriority_t& p_subpriority,
RtecScheduler::Preemption_Priority_t& p_priority
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::UNKNOWN_TASK,
RtecScheduler::NOT_SCHEDULED));
// Internal method to return the priority and subpriority
// values assigned to an RT_Info, based on its handle.
virtual void add_dependency_i (RtecScheduler::handle_t handle,
RtecScheduler::handle_t dependency,
CORBA::Long number_of_calls,
RtecScheduler::Dependency_Type_t dependency_type,
RtecScheduler::Dependency_Enabled_Type_t enabled
ACE_ENV_ARG_DECL)
ACE_THROW_SPEC ((CORBA::SystemException,
RtecScheduler::INTERNAL,
RtecScheduler::UNKNOWN_TASK));
// Internal method that registers a dependency between two RT_Infos.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -