📄 rtecscheduler.idl
字号:
// RtecScheduler.idl,v 1.24 2003/08/26 01:26:02 venkita Exp
#ifndef TAO_RTEC_SCHEDULER_IDL
#define TAO_RTEC_SCHEDULER_IDL
#include "TimeBase.idl"
#include "RtecBase.idl"
#pragma prefix ""
module RtecScheduler
{
// Module TimeBase defines the OMG Time Service.
typedef TimeBase::TimeT Time; // 100 nanoseconds
typedef Time Quantum_t;
typedef long Period_t; // 100 nanoseconds
typedef long Threads_t;
typedef sequence<Period_t> Period_Set;
enum Criticality_t
// Defines the criticality of the operation.
// For use with Dynamic Scheduler.
{
VERY_LOW_CRITICALITY,
LOW_CRITICALITY,
MEDIUM_CRITICALITY,
HIGH_CRITICALITY,
VERY_HIGH_CRITICALITY
};
enum Importance_t
// Defines the importance of the operation,
// which can be used by the Scheduler as a
// "tie-breaker" when other scheduling
// parameters are equal.
{
VERY_LOW_IMPORTANCE,
LOW_IMPORTANCE,
MEDIUM_IMPORTANCE,
HIGH_IMPORTANCE,
VERY_HIGH_IMPORTANCE
};
enum Info_Type_t
// Defines type of operation information.
{
OPERATION,
CONJUNCTION,
DISJUNCTION,
REMOTE_DEPENDANT
};
typedef RtecBase::Dependency_Enabled_Type_t Dependency_Enabled_Type_t;
typedef RtecBase::Dependency_Type_t Dependency_Type_t;
enum RT_Info_Enabled_Type_t
// Specify whether an RT_Info is enabled, disabled, or
// non-volatile (enabled + cannot be disabled automatically).
{
RT_INFO_DISABLED,
RT_INFO_ENABLED,
RT_INFO_NON_VOLATILE
};
typedef RtecBase::handle_t handle_t;
// RT_Info's are assigned per-application
// unique identifiers.
struct RT_Info_Enable_State_Pair
{
handle_t handle;
RT_Info_Enabled_Type_t enabled;
};
typedef sequence<RT_Info_Enable_State_Pair> RT_Info_Enable_State_Pair_Set;
typedef RtecBase::Dependency_Info Dependency_Info;
typedef sequence<Dependency_Info> Dependency_Set;
typedef RtecBase::OS_Priority OS_Priority;
typedef RtecBase::Preemption_Subpriority_t Preemption_Subpriority_t;
typedef RtecBase::Preemption_Priority_t Preemption_Priority_t;
struct RT_Info
// = TITLE
// Describes the QoS for an "RT_Operation".
//
// = DESCRIPTION
// The CPU requirements and QoS for each
// "entity" implementing an application
// operation is described by the following
// information.
{
// Application-defined string that uniquely
// identifies the operation.
string entry_point;
// The scheduler-defined unique identifier.
handle_t handle;
// Execution times.
Time worst_case_execution_time;
Time typical_execution_time;
// To account for server data caching.
Time cached_execution_time;
// For rate-base operations, this expresses
// the rate. 0 means "completely pasive",
// i.e., this operation only executes when
// called.
Period_t period;
// Operation Criticality (user assigned significance).
Criticality_t criticality;
// Operation importance, used to "break ties".
Importance_t importance;
// For time-slicing (for BACKGROUND operations only).
Quantum_t quantum;
// The number of internal threads contained by
// the operation.
Threads_t threads;
// The following attributes are defined by
// the Scheduler once the off-line schedule
// is computed.
// The operations we depend upon.
Dependency_Set dependencies;
// The OS thread priority for processing the
// events generated from this RT_Info.=
OS_Priority priority;
// For ordering RT_Info's with equal priority.
Preemption_Subpriority_t preemption_subpriority;
// The queue number for this RT_Info.
Preemption_Priority_t preemption_priority;
// Info_Type
Info_Type_t info_type;
// Whether or not the RT_Info is enabled.
RT_Info_Enabled_Type_t enabled;
// Token reserved for the scheduler's internal use:
// information placed here from outside the scheduler
// implementation is prone to be overwritten.
unsigned long long volatile_token;
};
enum Dispatching_Type_t
// Defines the type of prioritization strategy
// to be used by a dispatching queue
{
STATIC_DISPATCHING,
DEADLINE_DISPATCHING,
LAXITY_DISPATCHING
};
struct Config_Info
// = TITLE
// Describes configuration information for a dispatching queue
//
// = DESCRIPTION
// The CPU requirements and QoS for each
// "entity" implementing an application
// operation is described by the following
// information.
{
// preemption priority for messages dispatched by the queue
Preemption_Priority_t preemption_priority;
// OS priority of the dispatching thread associated with the queue
OS_Priority thread_priority;
// type of dispatching queue
Dispatching_Type_t dispatching_type;
// Set of timer periods associated with the priority level
Period_Set timer_periods;
};
typedef sequence<Config_Info> Config_Info_Set;
enum Anomaly_Severity
// Defines the type of prioritization strategy
// to be used by a dispatching queue
{
ANOMALY_FATAL,
ANOMALY_ERROR,
ANOMALY_WARNING,
ANOMALY_NONE
};
struct Scheduling_Anomaly
// = TITLE
// Describes an anomalous condition encountered during scheduling.
//
// = DESCRIPTION
// The severity and description of an anomolous
// condition encountered during schedule computation
// is described by the following information.
{
// Application-defined string that describes
// the anomalous condition.
string description;
// Severity of the anomaly
Anomaly_Severity severity;
};
typedef sequence<Scheduling_Anomaly> Scheduling_Anomaly_Set;
exception CYCLIC_DEPENDENCIES {};
// There are cycles in the registered dependencies.
exception UNRESOLVED_LOCAL_DEPENDENCIES {};
// There are unresolved local dependencies: one
// or more nodes that are not declared as having
// unresolved remote dependencies has no threads,
// period, or dependencies on another node.
exception THREAD_SPECIFICATION {};
// A node that specifies threads does not specify a period.
exception DUPLICATE_NAME {};
// The application is trying to register the same task again.
exception UNKNOWN_TASK {};
// The RT_Info handle was not valid.
exception NOT_SCHEDULED {};
// The application is trying to obtain scheduling information, but
// none is available.
exception UTILIZATION_BOUND_EXCEEDED {};
exception INSUFFICIENT_THREAD_PRIORITY_LEVELS {};
exception TASK_COUNT_MISMATCH {};
// Problems while computing scheduling.
exception UNKNOWN_PRIORITY_LEVEL {};
// Problems obtaining run-time dispatch queue info.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -