Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
TASTE
Ocarina
Commits
4e247c44
Commit
4e247c44
authored
May 30, 2018
by
yoogx
Browse files
* First part of the air_conf backend, generation of AIR XML
configuration file For openaadl/ocarina#160
parent
909bd0a4
Changes
12
Expand all
Hide whitespace changes
Inline
Side-by-side
src/backends/air_conf/ocarina-backends-air_conf-air_configuration.adb
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- OCARINA.BACKENDS.AIR_CONF.AIR_CONFIGURATION --
-- --
-- B o d y --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
with
Ocarina
.
Namet
;
use
Ocarina
.
Namet
;
with
Ocarina
.
ME_AADL
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
with
Ocarina
.
Backends
.
Utils
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
package
body
Ocarina
.
Backends
.
AIR_Conf
.
AIR_Configuration
is
use
Ocarina
.
ME_AADL
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
use
Ocarina
.
Backends
.
Utils
;
use
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
package
XTN
renames
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
procedure
Visit_Architecture_Instance
(
E
:
Node_Id
);
procedure
Visit_Component_Instance
(
E
:
Node_Id
);
procedure
Visit_System_Instance
(
E
:
Node_Id
);
procedure
Visit_Processor_Instance
(
E
:
Node_Id
);
procedure
Visit_Subcomponents_Of
is
new
Visit_Subcomponents_Of_G
(
Visit
);
-----------
-- Visit --
-----------
procedure
Visit
(
E
:
Node_Id
)
is
begin
case
Kind
(
E
)
is
when
K_Architecture_Instance
=>
Visit_Architecture_Instance
(
E
);
when
K_Component_Instance
=>
Visit_Component_Instance
(
E
);
when
others
=>
null
;
end
case
;
end
Visit
;
---------------------------------
-- Visit_Architecture_Instance --
---------------------------------
procedure
Visit_Architecture_Instance
(
E
:
Node_Id
)
is
begin
Visit
(
Root_System
(
E
));
end
Visit_Architecture_Instance
;
------------------------------
-- Visit_Component_Instance --
------------------------------
procedure
Visit_Component_Instance
(
E
:
Node_Id
)
is
Category
:
constant
Component_Category
:=
Get_Category_Of_Component
(
E
);
begin
case
Category
is
when
CC_System
=>
Visit_System_Instance
(
E
);
when
CC_Processor
=>
Visit_Processor_Instance
(
E
);
when
others
=>
null
;
end
case
;
end
Visit_Component_Instance
;
---------------------------
-- Visit_System_Instance --
---------------------------
procedure
Visit_System_Instance
(
E
:
Node_Id
)
is
U
:
Node_Id
;
R
:
Node_Id
;
begin
U
:=
XTN
.
Unit
(
Backend_Node
(
Identifier
(
E
)));
R
:=
XTN
.
Node
(
Backend_Node
(
Identifier
(
E
)));
Current_XML_Node
:=
XTN
.
Root_Node
(
XTN
.
XML_File
(
U
));
Push_Entity
(
U
);
Push_Entity
(
R
);
Visit_Subcomponents_Of
(
E
);
Pop_Entity
;
Pop_Entity
;
end
Visit_System_Instance
;
procedure
Map_AIR_Configuration_Node
(
E
:
Node_Id
)
with
Pre
=>
(
Get_Category_Of_Component
(
E
)
=
CC_Processor
);
--------------------------------
-- Map_AIR_Configuration_Node --
--------------------------------
procedure
Map_AIR_Configuration_Node
(
E
:
Node_Id
)
is
AIR_Configuration_Node
:
Node_Id
;
P
:
Node_Id
;
Q
:
Node_Id
;
begin
Append_Node_To_List
(
Make_XML_Comment
(
Get_String_Name
(
"Module configuration"
)),
XTN
.
Subitems
(
Current_XML_Node
));
-- Create the AIR_Configuration node
AIR_Configuration_Node
:=
Make_XML_Node
(
"AIR_Configuration"
);
Set_Str_To_Name_Buffer
(
"TicksPerSecond"
);
P
:=
Make_Defining_Identifier
(
Name_Find
);
Set_Str_To_Name_Buffer
(
"200"
);
-- XXX Hardcoded ?
Q
:=
Make_Defining_Identifier
(
Name_Find
);
Append_Node_To_List
(
Make_Assignement
(
P
,
Q
),
XTN
.
Items
(
AIR_Configuration_Node
));
Set_Str_To_Name_Buffer
(
"RequiredCores"
);
P
:=
Make_Defining_Identifier
(
Name_Find
);
Set_Str_To_Name_Buffer
(
"1"
);
-- XXX Hardcoded ?
Q
:=
Make_Defining_Identifier
(
Name_Find
);
Append_Node_To_List
(
Make_Assignement
(
P
,
Q
),
XTN
.
Items
(
AIR_Configuration_Node
));
Append_Node_To_List
(
AIR_Configuration_Node
,
XTN
.
Subitems
(
Current_XML_Node
));
end
Map_AIR_Configuration_Node
;
------------------------------
-- Visit_Processor_Instance --
------------------------------
procedure
Visit_Processor_Instance
(
E
:
Node_Id
)
is
begin
Map_Air_Configuration_Node
(
E
);
Visit_Subcomponents_Of
(
E
);
end
Visit_Processor_Instance
;
end
Ocarina
.
Backends
.
AIR_Conf
.
AIR_Configuration
;
src/backends/air_conf/ocarina-backends-air_conf-air_configuration.ads
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- OCARINA.BACKENDS.AIR_CONF.AIR_CONFIGURATION --
-- --
-- S p e c --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
package
Ocarina
.
Backends
.
AIR_Conf
.
AIR_Configuration
is
procedure
Visit
(
E
:
Node_Id
);
end
Ocarina
.
Backends
.
AIR_Conf
.
AIR_Configuration
;
src/backends/air_conf/ocarina-backends-air_conf-mapping.adb
0 → 100644
View file @
4e247c44
This diff is collapsed.
Click to expand it.
src/backends/air_conf/ocarina-backends-air_conf-mapping.ads
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- O C A R I N A . B A C K E N D S . A I R _ C O N F . M A P P I N G --
-- --
-- S p e c --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
with
Ocarina
.
Backends
.
Properties
;
use
Ocarina
.
Backends
.
Properties
;
package
Ocarina
.
Backends
.
AIR_Conf
.
Mapping
is
function
Map_Distributed_Application
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_HI_Node
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_HI_Unit
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Port
(
F
:
Node_Id
)
return
Node_Id
;
function
Map_Data
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Data_Access
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Bus_Access
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_System
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Process
(
E
:
Node_Id
;
Partition_Identifier
:
Unsigned_Long_Long
)
return
Node_Id
;
function
Map_Data_Size
(
T
:
Size_Type
)
return
Unsigned_Long_Long
;
function
Map_Virtual_Processor
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Processor
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Bus
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Port_Connection
(
E
:
Node_Id
)
return
Node_Id
;
function
Map_Process_Memory
(
Process
:
Node_Id
)
return
Node_Id
;
function
Map_System_Description
(
System
:
Node_Id
)
return
Node_Id
;
function
Map_Connection
(
Connection
:
Node_Id
;
Channel_Identifier
:
Unsigned_Long_Long
)
return
Node_Id
;
function
Map_Process_HM_Table
(
Process
:
Node_Id
)
return
Node_Id
;
function
Map_Processor_HM_Table
(
Processor
:
Node_Id
)
return
Node_Id
;
function
Map_System_HM_Table
(
System
:
Node_Id
)
return
Node_Id
;
end
Ocarina
.
Backends
.
AIR_Conf
.
Mapping
;
src/backends/air_conf/ocarina-backends-air_conf-module.adb
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- O C A R I N A . B A C K E N D S . A I R _ C O N F . M O D U L E --
-- --
-- B o d y --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
with
Locations
;
with
Ocarina
.
ME_AADL
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nutils
;
with
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
with
Ocarina
.
Backends
.
Utils
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
with
Ocarina
.
Backends
.
AIR_Conf
.
Mapping
;
package
body
Ocarina
.
Backends
.
AIR_Conf
.
Module
is
use
Locations
;
use
Ocarina
.
ME_AADL
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
use
Ocarina
.
Backends
.
Utils
;
use
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
use
Ocarina
.
Backends
.
AIR_Conf
.
Mapping
;
package
AINU
renames
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nutils
;
package
AIN
renames
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
package
XTN
renames
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
procedure
Visit_Architecture_Instance
(
E
:
Node_Id
);
procedure
Visit_Component_Instance
(
E
:
Node_Id
);
procedure
Visit_System_Instance
(
E
:
Node_Id
);
procedure
Visit_Process_Instance
(
E
:
Node_Id
);
procedure
Visit_Processor_Instance
(
E
:
Node_Id
);
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
);
procedure
Visit_Subcomponents_Of
is
new
Visit_Subcomponents_Of_G
(
Visit
);
-----------
-- Visit --
-----------
procedure
Visit
(
E
:
Node_Id
)
is
begin
case
Kind
(
E
)
is
when
K_Architecture_Instance
=>
Visit_Architecture_Instance
(
E
);
when
K_Component_Instance
=>
Visit_Component_Instance
(
E
);
when
others
=>
null
;
end
case
;
end
Visit
;
---------------------------------
-- Visit_Architecture_Instance --
---------------------------------
procedure
Visit_Architecture_Instance
(
E
:
Node_Id
)
is
begin
Visit
(
Root_System
(
E
));
end
Visit_Architecture_Instance
;
------------------------------
-- Visit_Component_Instance --
------------------------------
procedure
Visit_Component_Instance
(
E
:
Node_Id
)
is
Category
:
constant
Component_Category
:=
Get_Category_Of_Component
(
E
);
begin
case
Category
is
when
CC_System
=>
Visit_System_Instance
(
E
);
when
CC_Process
=>
Visit_Process_Instance
(
E
);
when
CC_Processor
=>
Visit_Processor_Instance
(
E
);
when
CC_Virtual_Processor
=>
Visit_Virtual_Processor_Instance
(
E
);
when
others
=>
null
;
end
case
;
end
Visit_Component_Instance
;
----------------------------
-- Visit_Process_Instance --
----------------------------
procedure
Visit_Process_Instance
(
E
:
Node_Id
)
is
begin
Visit_Subcomponents_Of
(
E
);
end
Visit_Process_Instance
;
---------------------------
-- Visit_System_Instance --
---------------------------
procedure
Visit_System_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
P
:
Node_Id
;
U
:
Node_Id
;
N
:
Node_Id
;
Processes
:
List_Id
;
begin
P
:=
Map_HI_Node
(
E
);
Push_Entity
(
P
);
U
:=
Map_HI_Unit
(
E
);
Push_Entity
(
U
);
if
not
AINU
.
Is_Empty
(
Subcomponents
(
E
))
then
S
:=
First_Node
(
Subcomponents
(
E
));
while
Present
(
S
)
loop
-- Visit the component instance corresponding to the
-- subcomponent S.
if
AINU
.
Is_Processor
(
Corresponding_Instance
(
S
))
then
Visit
(
Corresponding_Instance
(
S
));
end
if
;
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
N
:=
New_Node
(
XTN
.
K_HI_Tree_Bindings
);
Processes
:=
AINU
.
New_List
(
K_Node_Id
,
No_Location
);
XTN
.
Set_Processes
(
N
,
Processes
);
XTN
.
Set_Unit
(
N
,
U
);
XTN
.
Set_Node
(
N
,
P
);
AIN
.
Set_Backend_Node
(
Identifier
(
E
),
N
);
Pop_Entity
;
Pop_Entity
;
end
Visit_System_Instance
;
------------------------------
-- Visit_Processor_Instance --
------------------------------
procedure
Visit_Processor_Instance
(
E
:
Node_Id
)
is
N
:
Node_Id
;
Processes
:
List_Id
;
begin
Visit_Subcomponents_Of
(
E
);
N
:=
New_Node
(
XTN
.
K_HI_Tree_Bindings
);
Processes
:=
AINU
.
New_List
(
K_Node_Id
,
No_Location
);
XTN
.
Set_Processes
(
N
,
Processes
);
AIN
.
Set_Backend_Node
(
Identifier
(
E
),
N
);
end
Visit_Processor_Instance
;
--------------------------------------
-- Visit_Virtual_Processor_Instance --
--------------------------------------
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
)
is
begin
Visit_Subcomponents_Of
(
E
);
end
Visit_Virtual_Processor_Instance
;
end
Ocarina
.
Backends
.
AIR_Conf
.
Module
;
src/backends/air_conf/ocarina-backends-air_conf-module.ads
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- O C A R I N A . B A C K E N D S . A I R _ C O N F . M O D U L E --
-- --
-- S p e c --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
package
Ocarina
.
Backends
.
AIR_Conf
.
Module
is
procedure
Visit
(
E
:
Node_Id
);
end
Ocarina
.
Backends
.
AIR_Conf
.
Module
;
src/backends/air_conf/ocarina-backends-air_conf-partitions.adb
0 → 100644
View file @
4e247c44
This diff is collapsed.
Click to expand it.
src/backends/air_conf/ocarina-backends-air_conf-partitions.ads
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- OCARINA.BACKENDS.AIR_CONF.PARTITIONS --
-- --
-- S p e c --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --
------------------------------------------------------------------------------
package
Ocarina
.
Backends
.
AIR_Conf
.
Partitions
is
procedure
Visit
(
E
:
Node_Id
);
end
Ocarina
.
Backends
.
AIR_Conf
.
Partitions
;
src/backends/air_conf/ocarina-backends-air_conf.adb
0 → 100644
View file @
4e247c44
------------------------------------------------------------------------------
-- --
-- OCARINA COMPONENTS --
-- --
-- O C A R I N A . B A C K E N D S . A I R _ C O N F --
-- --
-- B o d y --
-- --
-- Copyright (C) 2018 ESA & ISAE. --
-- --
-- Ocarina is free software; you can redistribute it and/or modify under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- ware Foundation; either version 3, or (at your option) any later ver- --
-- sion. Ocarina 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. --
-- --
-- As a special exception under Section 7 of GPL version 3, you are granted --
-- additional permissions described in the GCC Runtime Library Exception, --
-- version 3.1, as published by the Free Software Foundation. --
-- --
-- You should have received a copy of the GNU General Public License and --
-- a copy of the GCC Runtime Library Exception along with this program; --
-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see --
-- <http://www.gnu.org/licenses/>. --
-- --
-- Ocarina is maintained by the TASTE project --
-- (taste-users@lists.tuxfamily.org) --
-- --