------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- This source file was automatically generated by Platypus -- see http://dossen.univ-brest.fr/apl -- -- Any modification of this file will be lost. -- Please see the "platypus" directory instead : it contains the Cheddar's -- model and its meta-model. ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- Cheddar is a GNU GPL real-time scheduling analysis tool. -- This program provides services to automatically check schedulability and -- other performance criteria of real-time architecture models. -- -- Copyright (C) 2002-2016 Frank Singhoff, Alain Plantec, Jerome Legrand -- -- The Cheddar project was started in 2002 by -- Frank Singhoff, Lab-STICC UMR 6285 laboratory, Université de Bretagne Occidentale -- -- Cheddar has been published in the "Agence de Protection des Programmes/France" in 2008. -- Since 2008, Ellidiss technologies also contributes to the development of -- Cheddar and provides industrial support. -- -- The full list of contributors and sponsors can be found in AUTHORS.txt and SPONSORS.txt -- -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2 of the License, or -- (at your option) any later version. -- -- This program is distributed in the hope that it will be useful, -- but WITHOUT ANY WARRANTY; without even the implied warranty of -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- GNU General Public License for more details. -- -- You should have received a copy of the GNU General Public License -- along with this program; if not, write to the Free Software -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -- -- -- Contact : cheddar@listes.univ-brest.fr -- To post to this mailing list, you must be subscribed -- (see http//beru.univ-brest.fr/~singhoff/cheddar for details) -- ------------------------------------------------------------------------------ ------------------------------------------------------------------------------ with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Framework_Config; use Framework_Config; use Framework_Config.Priority_Io; with id_generators; use id_generators; with Time_Unit_Events; use Time_Unit_Events; with Buffers; use Buffers; use Buffers.Buffer_Roles_Package; with access_Lists; with Unchecked_Deallocation; with Indexed_Tables; with standards_io; use standards_io; use standards_io.boolean_io; use standards_io.double_io; use standards_io.natural_io; with Ada.Finalization; with unbounded_strings; use unbounded_strings; use unbounded_strings.Unbounded_String_List_Package; with Primitive_XML_Strings; use Primitive_XML_Strings; with Tables; with Task_Set; use Task_Set; with doubles; use doubles; with Double_Util; use Double_Util; with Ada.Strings.Unbounded.Text_Io; use Ada.Strings.Unbounded.Text_Io; with Tasks; use Tasks; with Text_io; use Text_io; with Convert_Strings; with Convert_Unbounded_Strings; Package Scheduling_Analysis is type Buffer_Size_Item; type Buffer_Size_Item_Ptr is access all Buffer_Size_Item; type Density_Item; type Density_Item_Ptr is access all Density_Item; type Deadlock_Item; type Deadlock_Item_Ptr is access all Deadlock_Item; type Priority_Inversion_Item; type Priority_Inversion_Item_Ptr is access all Priority_Inversion_Item; type Task_Release_Record; type Task_Release_Record_Ptr is access all Task_Release_Record'Class; type Relative_Priority_Record; type Relative_Priority_Record_Ptr is access all Relative_Priority_Record; type Ceiling_Priority_Record; type Ceiling_Priority_Record_Ptr is access all Ceiling_Priority_Record; subtype Scheduling_Sequence is Time_Unit_Package.Indexed_Table; subtype Scheduling_Sequence_Ptr is Time_Unit_Package.Indexed_Table_Ptr; package Generic_Index_Lst_Package is new access_Lists(Put => Put, Element => Double, Element_Ptr => Double_Ptr, Free => Double_Util.Free, copy => copy, Xml_String => Xml_String); use Generic_Index_Lst_Package; package Double_Tasks_Parameters_Package is new Indexed_Tables(Double, Generic_Task_Ptr, Framework_Config.Max_Tasks, 0, Double_Util.Put, Double_Util.Initialize, Put_Name, Get_Name, XML_String, XML_Ref_String); use Double_Tasks_Parameters_Package; subtype Blocking_Time_Table is Double_Tasks_Parameters_Package.indexed_table; subtype Blocking_Time_Table_Ptr is Double_Tasks_Parameters_Package.indexed_table_Ptr; subtype Blocking_Time_Range is Double_Tasks_Parameters_Package.indexed_table_range; subtype Blocking_Time_Range_Ptr is Double_Tasks_Parameters_Package.indexed_table_range_Ptr; subtype Response_Time_Table is Double_Tasks_Parameters_Package.indexed_table; subtype Response_Time_Table_Ptr is Double_Tasks_Parameters_Package.indexed_table_Ptr; subtype Response_Time_Range is Double_Tasks_Parameters_Package.indexed_table_range; subtype Response_Time_Range_Ptr is Double_Tasks_Parameters_Package.indexed_table_range_Ptr; -- --------= Buffer_Size_Item =-------- type Buffer_Size_Item is record time : Natural; size : Natural; end record; procedure Initialize(obj : out Buffer_Size_Item); procedure Put(obj : in Buffer_Size_Item); procedure Put(obj : in Buffer_Size_Item_Ptr); function Copy(obj : in Buffer_Size_Item_Ptr) return Buffer_Size_Item_Ptr; function Copy(obj : in Buffer_Size_Item) return Buffer_Size_Item_Ptr; procedure Build_Attributes_XML_String(obj : in Buffer_Size_Item; result : in out Unbounded_String); function XML_String(obj : in Buffer_Size_Item) return Unbounded_String; function XML_String(obj : in Buffer_Size_Item_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Buffer_Size_Item) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Buffer_Size_Item, Buffer_Size_Item_Ptr); package Buffer_Size_Package is new Tables(Buffer_Size_Item, Framework_Config.Max_Scheduling_Period, Put, XML_String, XML_Ref_String); use Buffer_Size_Package; subtype Buffer_Size_Range is Buffer_Size_Package.table_range; subtype Buffer_Size_Range_Ptr is Buffer_Size_Package.table_range_Ptr; subtype Buffer_Size_Table is Buffer_Size_Package.table; subtype Buffer_Size_Table_Ptr is Buffer_Size_Package.table_Ptr; package Buffer_Result_Package is new Indexed_Tables(Buffer_Size_Table, Buffer_Ptr, Framework_Config.Max_Buffers, 0, Put, Initialize, Buffers.Put_Name, Buffers.Get_Name, XML_Root_String, XML_String); use Buffer_Result_Package; subtype Buffer_Result_Range is Buffer_Result_Package.indexed_table_range; subtype Buffer_Result_Range_Ptr is Buffer_Result_Package.indexed_table_range_Ptr; subtype Buffer_Result_Table is Buffer_Result_Package.indexed_table; subtype Buffer_Result_Table_Ptr is Buffer_Result_Package.indexed_table_Ptr; package Waiting_Time_Package is new Tables(Double, Framework_Config.Max_Scheduling_Period, Put, XML_String, XML_Ref_String); use Waiting_Time_Package; subtype Waiting_Time_Range is Waiting_Time_Package.table_range; subtype Waiting_Time_Range_Ptr is Waiting_Time_Package.table_range_Ptr; subtype Waiting_Time_Table is Waiting_Time_Package.table; subtype Waiting_Time_Table_Ptr is Waiting_Time_Package.table_Ptr; -- --------= Density_Item =-------- type Density_Item is record response_time : Natural; probability : Double; end record; procedure Initialize(obj : out Density_Item); procedure Put(obj : in Density_Item); procedure Put(obj : in Density_Item_Ptr); function Copy(obj : in Density_Item_Ptr) return Density_Item_Ptr; function Copy(obj : in Density_Item) return Density_Item_Ptr; procedure Build_Attributes_XML_String(obj : in Density_Item; result : in out Unbounded_String); function XML_String(obj : in Density_Item) return Unbounded_String; function XML_String(obj : in Density_Item_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Density_Item) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Density_Item, Density_Item_Ptr); package Density_Package is new Tables(Density_Item, Framework_Config.Max_Density_Size, Put, XML_String, XML_Ref_String); use Density_Package; subtype Density_Range is Density_Package.table_range; subtype Density_Range_Ptr is Density_Package.table_range_Ptr; subtype Density_Table is Density_Package.table; subtype Density_Table_Ptr is Density_Package.table_Ptr; package Densities_Table_Package is new Indexed_Tables(Density_Table, Generic_Task_Ptr, framework_config.max_tasks, 0, Put, Initialize, Put_Name, Get_Name, XML_Root_String, XML_String); use Densities_Table_Package; subtype Densities_Range is Densities_Table_Package.indexed_table_range; subtype Densities_Range_Ptr is Densities_Table_Package.indexed_table_range_Ptr; subtype Densities_Table is Densities_Table_Package.indexed_table; subtype Densities_Table_Ptr is Densities_Table_Package.indexed_table_Ptr; -- --------= Deadlock_Item =-------- type Deadlock_Item is record time : Natural; task_name : Unbounded_String; resource_name : Unbounded_String; end record; procedure Initialize(obj : out Deadlock_Item); procedure Put(obj : in Deadlock_Item); procedure Put(obj : in Deadlock_Item_Ptr); function Copy(obj : in Deadlock_Item_Ptr) return Deadlock_Item_Ptr; function Copy(obj : in Deadlock_Item) return Deadlock_Item_Ptr; procedure Build_Attributes_XML_String(obj : in Deadlock_Item; result : in out Unbounded_String); function XML_String(obj : in Deadlock_Item) return Unbounded_String; function XML_String(obj : in Deadlock_Item_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Deadlock_Item) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Deadlock_Item, Deadlock_Item_Ptr); package Deadlock_Package is new Access_Lists(Deadlock_Item, Deadlock_Item_Ptr, Put, Free, Copy, Xml_String); use Deadlock_Package; subtype Deadlock_Iterator is Deadlock_Package.iterator; subtype Deadlock_Iterator_Ptr is Deadlock_Package.iterator_Ptr; subtype Deadlock_List is Deadlock_Package.list; subtype Deadlock_List_Ptr is Deadlock_Package.list_Ptr; -- --------= Priority_Inversion_Item =-------- type Priority_Inversion_Item is record start_time : Natural; end_time : Natural; task_name : Unbounded_String; resource_name : Unbounded_String; end record; procedure Initialize(obj : out Priority_Inversion_Item); procedure Put(obj : in Priority_Inversion_Item); procedure Put(obj : in Priority_Inversion_Item_Ptr); function Copy(obj : in Priority_Inversion_Item_Ptr) return Priority_Inversion_Item_Ptr; function Copy(obj : in Priority_Inversion_Item) return Priority_Inversion_Item_Ptr; procedure Build_Attributes_XML_String(obj : in Priority_Inversion_Item; result : in out Unbounded_String); function XML_String(obj : in Priority_Inversion_Item) return Unbounded_String; function XML_String(obj : in Priority_Inversion_Item_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Priority_Inversion_Item) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Priority_Inversion_Item, Priority_Inversion_Item_Ptr); package Priority_Inversion_List_Package is new Access_Lists(Priority_Inversion_Item, Priority_Inversion_Item_Ptr, Put, Free, Copy, Xml_String); use Priority_Inversion_List_Package; subtype Priority_Inversion_Iterator is Priority_Inversion_List_Package.iterator; subtype Priority_Inversion_Iterator_Ptr is Priority_Inversion_List_Package.iterator_Ptr; subtype Priority_Inversion_List is Priority_Inversion_List_Package.list; subtype Priority_Inversion_List_Ptr is Priority_Inversion_List_Package.list_Ptr; -- --------= Task_Release_Record =-------- type Task_Release_Record is new Ada.Finalization.Controlled with record cheddar_private_id : Unbounded_String; task_name : Unbounded_String; task_index : Natural; capacity : Natural; release_time : Natural; finish_time : Natural; deadline : Natural; completed : Boolean; end record; procedure Initialize(obj : in out Task_Release_Record); procedure Put(obj : in Task_Release_Record); procedure Put(obj : in Task_Release_Record_Ptr); procedure Put_Name(obj : in Task_Release_Record_Ptr); procedure Build_Attributes_XML_String(obj : in Task_Release_Record; result : in out Unbounded_String); function XML_String(obj : in Task_Release_Record) return Unbounded_String; function XML_String(obj : in Task_Release_Record_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Task_Release_Record) return Unbounded_String; function XML_Ref_String(obj : in Task_Release_Record_Ptr) return Unbounded_String; function Copy(obj : in Task_Release_Record_Ptr) return Task_Release_Record_Ptr; function Copy(obj : in Task_Release_Record) return Task_Release_Record_Ptr; function type_of(obj : in Task_Release_Record) return unbounded_string_list; function type_of(obj : in Task_Release_Record_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Task_Release_Record'Class, Task_Release_Record_Ptr); package Task_Release_Records_Table_Package is new Tables(Task_Release_Record_Ptr, Framework_Config.Max_Task_Release_Records, Put, XML_String, XML_String); use Task_Release_Records_Table_Package; subtype Task_Release_Records_Range is Task_Release_Records_Table_Package.table_range; subtype Task_Release_Records_Range_Ptr is Task_Release_Records_Table_Package.table_range_Ptr; subtype Task_Release_Records_Table is Task_Release_Records_Table_Package.table; subtype Task_Release_Records_Table_Ptr is Task_Release_Records_Table_Package.table_Ptr; -- --------= Relative_Priority_Record =-------- type Relative_Priority_Record is record higher_priority_task : Unbounded_String; hpt_index : Natural; lower_priority_task : Unbounded_String; lpt_index : Natural; end record; procedure Initialize(obj : out Relative_Priority_Record); procedure Put(obj : in Relative_Priority_Record); procedure Put(obj : in Relative_Priority_Record_Ptr); function Copy(obj : in Relative_Priority_Record_Ptr) return Relative_Priority_Record_Ptr; function Copy(obj : in Relative_Priority_Record) return Relative_Priority_Record_Ptr; procedure Build_Attributes_XML_String(obj : in Relative_Priority_Record; result : in out Unbounded_String); function XML_String(obj : in Relative_Priority_Record) return Unbounded_String; function XML_String(obj : in Relative_Priority_Record_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Relative_Priority_Record) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Relative_Priority_Record, Relative_Priority_Record_Ptr); package Relative_Priority_Records_Table_Package is new Tables(Relative_Priority_Record_Ptr, Framework_Config.Max_Relative_Priority_Records, Put, XML_String, XML_String); use Relative_Priority_Records_Table_Package; subtype Relative_Priority_Records_Range is Relative_Priority_Records_Table_Package.table_range; subtype Relative_Priority_Records_Range_Ptr is Relative_Priority_Records_Table_Package.table_range_Ptr; subtype Relative_Priority_Records_Table is Relative_Priority_Records_Table_Package.table; subtype Relative_Priority_Records_Table_Ptr is Relative_Priority_Records_Table_Package.table_Ptr; -- --------= Ceiling_Priority_Record =-------- type Ceiling_Priority_Record is record resource_name : Unbounded_String; ceiling_priority : Priority_Range; end record; procedure Initialize(obj : out Ceiling_Priority_Record); procedure Put(obj : in Ceiling_Priority_Record); procedure Put(obj : in Ceiling_Priority_Record_Ptr); function Copy(obj : in Ceiling_Priority_Record_Ptr) return Ceiling_Priority_Record_Ptr; function Copy(obj : in Ceiling_Priority_Record) return Ceiling_Priority_Record_Ptr; procedure Build_Attributes_XML_String(obj : in Ceiling_Priority_Record; result : in out Unbounded_String); function XML_String(obj : in Ceiling_Priority_Record) return Unbounded_String; function XML_String(obj : in Ceiling_Priority_Record_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Ceiling_Priority_Record) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Ceiling_Priority_Record, Ceiling_Priority_Record_Ptr); package Ceiling_Priority_Table_Package is new Tables(Ceiling_Priority_Record_Ptr, Framework_Config.Max_Resources, Put, XML_String, XML_String); use Ceiling_Priority_Table_Package; subtype Ceiling_Priority_Range is Ceiling_Priority_Table_Package.table_range; subtype Ceiling_Priority_Range_Ptr is Ceiling_Priority_Table_Package.table_range_Ptr; subtype Ceiling_Priority_Table is Ceiling_Priority_Table_Package.table; subtype Ceiling_Priority_Table_Ptr is Ceiling_Priority_Table_Package.table_Ptr; End Scheduling_Analysis;