RtecBase.idl

Go to the documentation of this file.
00001 // RtecBase.idl,v 1.4 2003/08/24 18:17:04 venkita Exp
00002 /**
00003  * @file RtecBase.idl
00004  *
00005  * @brief Define the RtecBase module
00006  *
00007  * RtecBase.idl,v 1.2 2001/09/17 20:50:34 coryan Exp
00008  *
00009  * @author Carlos O'Ryan <coryan@uci.edu>
00010  */
00011 
00012 #ifndef TAO_RTEC_BASE_IDL
00013 #define TAO_RTEC_BASE_IDL
00014 
00015 /**
00016  * @namespace RtecBase
00017  *
00018  * @brief Define types shared by the real-time scheduling and event
00019  * services.
00020  *
00021  * These types are defined in a separate module to decouple the
00022  * real-time event services from the scheduling service interface (and
00023  * implementation!)
00024  */
00025 module RtecBase
00026 {
00027   /// Specify type of call.
00028   enum Dependency_Type_t
00029   {
00030     /// One-way call.
00031     ONE_WAY_CALL,
00032     /// Two-way call.
00033     TWO_WAY_CALL
00034   };
00035 
00036   /// Provide a fast, low-footprint identifier for RT_Infos.
00037   /**
00038    * The Event and Scheduling Service need to communicate information
00039    * about RT_Infos (descriptions about the scheduling properties of a
00040    * simple operation).  On a centralized application one would use
00041    * pointers for such a task, but obviously that does not work on a
00042    * distributed system.
00043    * It is tempting to use object references to identify each RT_Info,
00044    * but that does not work either:  first the *contents* of the
00045    * RT_Info must be transmitted between applications, and object
00046    * references are not good identifiers (due to the semantics of
00047    * _is_equivalent())
00048    *
00049    * The handle_t type is used to generate unique identifiers on the
00050    * scheduling service, the Event Service can then refer to any
00051    * RT_Info using either their name or the quicker handle_t.
00052    */
00053   typedef long handle_t;
00054 
00055   enum Dependency_Enabled_Type_t
00056   // Specify whether a dependency is enabled, disabled, or
00057   // non-volatile (enabled + cannot be disabled automatically).
00058   {
00059     DEPENDENCY_DISABLED,
00060     DEPENDENCY_ENABLED,
00061     DEPENDENCY_NON_VOLATILE
00062   };
00063 
00064   /// Define dependencies between two RT_Infos
00065   struct Dependency_Info
00066   {
00067     /// Type of dependency
00068     Dependency_Type_t dependency_type;
00069 
00070     /// Number of times the dependency is called
00071     long number_of_calls;
00072 
00073     /// Dependency
00074     handle_t rt_info;
00075 
00076     handle_t rt_info_depended_on;
00077     Dependency_Enabled_Type_t enabled;
00078     // Notice the reference to the RT_Info we
00079     // depend on.
00080   };
00081 
00082   /// Helper typedef to define the OS priority.
00083   typedef long OS_Priority;
00084 
00085   /// Helper typedef to define the OS-independent priority
00086   typedef long Preemption_Priority_t;
00087 
00088   /// Helper typedef to define the OS-independent sub-priority
00089   typedef long Preemption_Subpriority_t;
00090 };
00091 
00092 #endif /* TAO_RTEC_BASE_IDL */

Generated on Thu Nov 9 13:11:11 2006 for TAO_RTEvent by doxygen 1.3.6