ocarina-backends-mast_tree-nodes.idl 3.94 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
module Ocarina::Backends::MAST_Tree::Nodes {

  /******************/
  /* Internal types */
  /******************/

  typedef octet   Operator_Id;
  typedef long    Name_Id;
  typedef long    Value_Id;

  /******************/
  /* Internal nodes */
  /******************/

  interface Node_Id {
    Node_Id    Next_Node;
    Node_Id    Frontend_Node;
  };

  interface Definition : Node_Id {
    Node_Id    Defining_Identifier;
  };

  interface MAST_Node : Node_Id {
    Name_Id    Node_Name;
    Name_Id    Node_Type;
  };

29 30 31 32 33 34 35 36 37
  interface Driver : MAST_Node {
  	boolean 	Is_Packet_Driver;
  	Name_Id	Send_Operation_Name;
  	Name_Id	Scheduling_Server;
	Name_Id	Receive_Operation_Name;
	boolean  Message_Partitioning;
	boolean  Is_RTA_Overhead_Model_Coupled;
  };

julien.delange's avatar
julien.delange committed
38 39 40 41 42 43 44 45
  interface Scheduling_Server : MAST_Node {
  	Name_Id 		Associated_Scheduler;
	Node_Id		Parameters;
	boolean     Is_Regular;
	Name_Id		Server_Processing_Resource;
  };

  interface Scheduling_Server_Parameters : Node_Id {
46
   boolean		Fixed_Priority;
julien.delange's avatar
julien.delange committed
47 48 49 50 51
  	Node_Id 		Sched_Type;
	Node_Id		Priority;
	boolean     Is_Preassigned;
  };

52 53
  interface Scheduler : MAST_Node
  {
54
  	boolean 		Is_Primary_Scheduler;
55
  	Name_Id		Host;
56 57 58 59
  	Node_Id 		Policy;
  	boolean 		Use_Fixed_Priority;
  	Node_Id		Max_Priority;
  	Node_Id 		Min_Priority;
60 61
  };

62
  interface Scheduler_Policy : MAST_Node
63 64 65 66 67
  {
  	Name_Id Scheduling_Type;
	Node_Id Worst_Context_Switch;
	Node_Id Avg_Context_Switch;
	Node_Id Best_Context_Switch;
julien.delange's avatar
julien.delange committed
68 69
	Node_Id Max_Interrupt_Priority;
	Node_Id Min_Interrupt_Priority;
70 71 72 73 74 75 76 77 78 79 80
  };

  interface Literal : Node_Id {
    Value_Id   Value;
  };

  interface List_Id {
    Node_Id    First_Node;
    Node_Id    Last_Node;
  };

julien.delange's avatar
julien.delange committed
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
  interface Processing_Resource : MAST_Node {
  	Node_Id 		Max_Interrupt_Priority;
  	Node_Id 		Min_Interrupt_Priority;
  	Node_Id 		Worst_ISR_Switch;
  	Node_Id 		Avg_ISR_Switch;
  	Node_Id 		Best_ISR_Switch;
  	Node_Id 		Speed_Factor;
	boolean     Regular_Processor;
	boolean     Packet_Based_Network;
	boolean     Fixed_Priority_Processor;
	boolean		Is_Simplex;
	boolean		Is_Half_Duplex;
	boolean		Is_Full_Duplex;
	Node_Id		Throughput;
	Node_Id		Max_Blocking;
	Node_Id		Max_Packet_Size;
	Node_Id		Min_Packet_Size;
	Node_Id		Max_Packet_Transmission_Time;
	Node_Id		Min_Packet_Transmission_Time;
	List_Id		List_Of_Drivers;
  };


104 105 106
  interface Operation : MAST_Node {
  	boolean 		Is_Simple;
	boolean		Is_Enclosing;
107
	boolean		Is_Message_Transmission;
108 109
	boolean		Is_Composite;
	List_Id		Operations;
110
	List_Id		Shared_Resources_List;
111 112 113
	Node_Id		Worst_Case_Execution_Time;
	Node_Id		Best_Case_Execution_Time;
	Node_Id		Avg_Case_Execution_Time;
114 115 116
	Node_Id		Max_Message_Size;
	Node_Id		Avg_Message_Size;
	Node_Id		Min_Message_Size;
117 118 119
  };


julien.delange's avatar
julien.delange committed
120 121 122 123
  interface Transaction : MAST_Node {
  	boolean 		Is_Regular;
	List_Id		External_Events;
	List_Id		Internal_Events;
124 125 126 127 128 129 130 131 132
	List_Id		Event_Handlers;
  };

	interface Event : MAST_Node {
		boolean Is_Regular;
		boolean Is_Sporadic;
		boolean Is_Periodic;
		Node_Id Timing_Requirements;
		Node_Id Min_Interarrival;
julien.delange's avatar
julien.delange committed
133
		Node_Id Period;
134 135
	};

136 137 138 139
	interface Shared_Resource : MAST_Node {
		boolean Is_Immediate_Ceiling_Resource;
	};

140 141 142 143 144 145 146 147 148 149 150 151 152
	interface Event_Timing_Requirements : Node_Id {
		boolean Is_Hard_Deadline;
		Node_Id Deadline;
		Name_Id Referenced_Event;
	};


  interface Event_Handler : Node_Id {
  boolean Is_Activity;
  Name_Id Input_Name;
  Name_Id Output_Name;
  Name_Id Operation_Name;
  Name_Id Server_Name;
julien.delange's avatar
julien.delange committed
153 154
  };

155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186
  interface Defining_Identifier : Node_Id {
    Name_Id    Name;
    Node_Id    Corresponding_Node;
    Node_Id    Compile_Unit;
  };

  interface MAST_File : Definition {
    Node_Id    Distributed_Application_Unit;
    List_Id    Declarations;
  };

 
   interface Base_Type {
      Name_Id     Image;
   };
 
   interface Container : Node_Id {
      Node_Id     Content;
   };

   interface _String : Base_Type {};
   interface _Numeric : Base_Type {};
   interface _Float : Base_Type {};

   interface HI_Tree_Bindings : Node_Id {
      Node_Id    Unit;
      Node_Id    Node;
      List_Id    Processes;
   };


};