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 */