------------------------------------------------------------------------------ ------------------------------------------------------------------------------ -- 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; with id_generators; use id_generators; with Scheduling_Analysis; use Scheduling_Analysis; with Processors; use Processors; with Tasks; use Tasks; with Text_io; use Text_io; with Unbounded_Strings; use Unbounded_Strings; use unbounded_strings.Unbounded_String_List_Package; with Convert_Strings; with Convert_Unbounded_Strings; with standards_io; use standards_io; use standards_io.natural_io; use standards_io.double_io; use standards_io.boolean_io; with Ada.Finalization; with Unchecked_Deallocation; with Primitive_XML_Strings; use Primitive_XML_Strings; with Indexed_Tables; with Tables; with doubles; use doubles; with natural_util; use natural_util; with Time_Unit_Events; use Time_Unit_Events; use Time_Unit_Events.Time_Unit_Package; with ada.strings.unbounded.text_io; use ada.strings.unbounded.text_io; Package Multiprocessor_Services_Interface is type Scheduling_Result; type Scheduling_Result_Ptr is access all Scheduling_Result; type Run_Server; type Run_Server_Ptr is access all Run_Server'Class; type Run_Server_Primal; type Run_Server_Primal_Ptr is access all Run_Server_Primal'Class; type Run_Server_Dual; type Run_Server_Dual_Ptr is access all Run_Server_Dual'Class; -- --------= Scheduling_Result =-------- type Scheduling_Result is record scheduling_msg : Unbounded_String; has_error : Boolean; error_msg : Unbounded_String; result : Scheduling_Sequence_Ptr; end record; procedure Initialize(obj : out Scheduling_Result); procedure Put(obj : in Scheduling_Result); procedure Put(obj : in Scheduling_Result_Ptr); function Copy(obj : in Scheduling_Result_Ptr) return Scheduling_Result_Ptr; function Copy(obj : in Scheduling_Result) return Scheduling_Result_Ptr; procedure Build_Attributes_XML_String(obj : in Scheduling_Result; result : in out Unbounded_String); function XML_String(obj : in Scheduling_Result) return Unbounded_String; function XML_String(obj : in Scheduling_Result_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Scheduling_Result) return Unbounded_String; procedure Free is new Unchecked_Deallocation (Scheduling_Result, Scheduling_Result_Ptr); package Scheduling_Result_Per_Processor_Package is new Indexed_Tables(Scheduling_Result, Generic_Processor_Ptr, Framework_Config.Max_Processors, 0, Put, Initialize, Processors.Put_Name, Get_Name, XML_String, XML_Ref_String, to_unbounded_string("time_unit")); use Scheduling_Result_Per_Processor_Package; subtype Scheduling_Table is Scheduling_Result_Per_Processor_Package.indexed_table; subtype Scheduling_Table_Ptr is Scheduling_Result_Per_Processor_Package.indexed_table_Ptr; subtype Scheduling_Table_Range is Scheduling_Result_Per_Processor_Package.indexed_table_range; subtype Scheduling_Table_Range_Ptr is Scheduling_Result_Per_Processor_Package.indexed_table_range_Ptr; package Naturals_Table_Package is new Tables(Natural, framework_config.max_scheduling_period, Put, XML_String, XML_Ref_String); use Naturals_Table_Package; subtype Naturals_Table_Range is Naturals_Table_Package.table_range; subtype Naturals_Table_Range_Ptr is Naturals_Table_Package.table_range_Ptr; subtype Naturals_Table is Naturals_Table_Package.table; subtype Naturals_Table_Ptr is Naturals_Table_Package.table_Ptr; package Periodic_Tasks_Table_Package is new Tables(Periodic_Task_Ptr, Framework_Config.Max_Tasks, Put, XML_String, XML_Ref_String); use Periodic_Tasks_Table_Package; subtype Periodic_Tasks_Table_Range is Periodic_Tasks_Table_Package.table_range; subtype Periodic_Tasks_Table_Range_Ptr is Periodic_Tasks_Table_Package.table_range_Ptr; subtype Periodic_Tasks_Table is Periodic_Tasks_Table_Package.table; subtype Periodic_Tasks_Table_Ptr is Periodic_Tasks_Table_Package.table_Ptr; -- --------= Run_Server =-------- type Run_Server is new Periodic_Task with record rate : Double; core : Unbounded_String; executing : Boolean; deadlines : Naturals_Table; periods : Naturals_Table; job : Naturals_Table_Range; job_capacity : Natural; job_duration : Natural; job_release : Natural; job_deadline : Natural; end record; procedure Initialize(obj : in out Run_Server); procedure Put(obj : in Run_Server); procedure Put(obj : in Run_Server_Ptr); procedure Put_Name(obj : in Run_Server_Ptr); procedure Build_Attributes_XML_String(obj : in Run_Server; result : in out Unbounded_String); function XML_String(obj : in Run_Server) return Unbounded_String; function XML_String(obj : in Run_Server_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Run_Server) return Unbounded_String; function XML_Ref_String(obj : in Run_Server_Ptr) return Unbounded_String; function Get_Name (obj : in Run_Server) return Unbounded_String; function Get_Name (obj : in Run_Server_Ptr) return Unbounded_String; function Copy(obj : in Run_Server_Ptr) return Run_Server_Ptr; function Copy(obj : in Run_Server) return Run_Server_Ptr; function type_of(obj : in Run_Server) return unbounded_string_list; function type_of(obj : in Run_Server_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Run_Server'Class, Run_Server_Ptr); package Run_Servers_Table_Package is new Tables(Run_Server_Ptr, Framework_Config.Max_Tasks, Put, XML_String, XML_String); use Run_Servers_Table_Package; subtype Run_Servers_Table_Range is Run_Servers_Table_Package.table_range; subtype Run_Servers_Table_Range_Ptr is Run_Servers_Table_Package.table_range_Ptr; subtype Run_Servers_Table is Run_Servers_Table_Package.table; subtype Run_Servers_Table_Ptr is Run_Servers_Table_Package.table_Ptr; -- --------= Run_Server_Primal =-------- type Run_Server_Primal is new Run_Server with record packed_servers : Run_Servers_Table; end record; procedure Initialize(obj : in out Run_Server_Primal); procedure Put(obj : in Run_Server_Primal); procedure Put(obj : in Run_Server_Primal_Ptr); procedure Put_Name(obj : in Run_Server_Primal_Ptr); procedure Build_Attributes_XML_String(obj : in Run_Server_Primal; result : in out Unbounded_String); function XML_String(obj : in Run_Server_Primal) return Unbounded_String; function XML_String(obj : in Run_Server_Primal_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Run_Server_Primal) return Unbounded_String; function XML_Ref_String(obj : in Run_Server_Primal_Ptr) return Unbounded_String; function Get_Name (obj : in Run_Server_Primal) return Unbounded_String; function Get_Name (obj : in Run_Server_Primal_Ptr) return Unbounded_String; function Copy(obj : in Run_Server_Primal_Ptr) return Run_Server_Ptr; function Copy(obj : in Run_Server_Primal) return Run_Server_Ptr; function type_of(obj : in Run_Server_Primal) return unbounded_string_list; function type_of(obj : in Run_Server_Primal_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Run_Server_Primal'Class, Run_Server_Primal_Ptr); -- --------= Run_Server_Dual =-------- type Run_Server_Dual is new Run_Server with record primal_server : Run_Server_Primal_Ptr; end record; procedure Initialize(obj : in out Run_Server_Dual); procedure Put(obj : in Run_Server_Dual); procedure Put(obj : in Run_Server_Dual_Ptr); procedure Put_Name(obj : in Run_Server_Dual_Ptr); procedure Build_Attributes_XML_String(obj : in Run_Server_Dual; result : in out Unbounded_String); function XML_String(obj : in Run_Server_Dual) return Unbounded_String; function XML_String(obj : in Run_Server_Dual_Ptr) return Unbounded_String; function XML_Ref_String(obj : in Run_Server_Dual) return Unbounded_String; function XML_Ref_String(obj : in Run_Server_Dual_Ptr) return Unbounded_String; function Get_Name (obj : in Run_Server_Dual) return Unbounded_String; function Get_Name (obj : in Run_Server_Dual_Ptr) return Unbounded_String; function Copy(obj : in Run_Server_Dual_Ptr) return Run_Server_Ptr; function Copy(obj : in Run_Server_Dual) return Run_Server_Ptr; function type_of(obj : in Run_Server_Dual) return unbounded_string_list; function type_of(obj : in Run_Server_Dual_Ptr) return unbounded_string_list; procedure Free is new Unchecked_Deallocation (Run_Server_Dual'Class, Run_Server_Dual_Ptr); End Multiprocessor_Services_Interface;