diff options
Diffstat (limited to 'TAO/orbsvcs/orbsvcs/RtecBase.idl')
-rw-r--r-- | TAO/orbsvcs/orbsvcs/RtecBase.idl | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/TAO/orbsvcs/orbsvcs/RtecBase.idl b/TAO/orbsvcs/orbsvcs/RtecBase.idl new file mode 100644 index 00000000000..193e6f65299 --- /dev/null +++ b/TAO/orbsvcs/orbsvcs/RtecBase.idl @@ -0,0 +1,92 @@ +// $Id$ +/** + * @file RtecBase.idl + * + * @brief Define the RtecBase module + * + * RtecBase.idl,v 1.2 2001/09/17 20:50:34 coryan Exp + * + * @author Carlos O'Ryan <coryan@uci.edu> + */ + +#ifndef TAO_RTEC_BASE_IDL +#define TAO_RTEC_BASE_IDL + +/** + * @namespace RtecBase + * + * @brief Define types shared by the real-time scheduling and event + * services. + * + * These types are defined in a separate module to decouple the + * real-time event services from the scheduling service interface (and + * implementation!) + */ +module RtecBase +{ + /// Specify type of call. + enum Dependency_Type_t + { + /// One-way call. + ONE_WAY_CALL, + /// Two-way call. + TWO_WAY_CALL + }; + + /// Provide a fast, low-footprint identifier for RT_Infos. + /** + * The Event and Scheduling Service need to communicate information + * about RT_Infos (descriptions about the scheduling properties of a + * simple operation). On a centralized application one would use + * pointers for such a task, but obviously that does not work on a + * distributed system. + * It is tempting to use object references to identify each RT_Info, + * but that does not work either: first the *contents* of the + * RT_Info must be transmitted between applications, and object + * references are not good identifiers (due to the semantics of + * _is_equivalent()) + * + * The handle_t type is used to generate unique identifiers on the + * scheduling service, the Event Service can then refer to any + * RT_Info using either their name or the quicker handle_t. + */ + typedef long handle_t; + + enum Dependency_Enabled_Type_t + // Specify whether a dependency is enabled, disabled, or + // non-volatile (enabled + cannot be disabled automatically). + { + DEPENDENCY_DISABLED, + DEPENDENCY_ENABLED, + DEPENDENCY_NON_VOLATILE + }; + + /// Define dependencies between two RT_Infos + struct Dependency_Info + { + /// Type of dependency + Dependency_Type_t dependency_type; + + /// Number of times the dependency is called + long number_of_calls; + + /// Dependency + handle_t rt_info; + + handle_t rt_info_depended_on; + Dependency_Enabled_Type_t enabled; + // Notice the reference to the RT_Info we + // depend on. + }; + + /// Helper typedef to define the OS priority. + typedef long OS_Priority; + + /// Helper typedef to define the OS-independent priority + typedef long Preemption_Priority_t; + + /// Helper typedef to define the OS-independent sub-priority + typedef long Preemption_Subpriority_t; +}; + +#endif /* TAO_RTEC_BASE_IDL */ |