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
ab215fe1
Commit
ab215fe1
authored
Dec 05, 2014
by
Julien
Browse files
Add the main structure of the XML configuration file
parent
5437f6b4
Changes
6
Hide whitespace changes
Inline
Side-by-side
src/backends/ocarina-backends-deos_conf-hm.adb
0 → 100644
View file @
ab215fe1
-- 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.Properties;
with
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
-- with Ocarina.Backends.Deos_Conf.Mapping;
package
body
Ocarina
.
Backends
.
Deos_Conf
.
Hm
is
-- use Locations;
use
Ocarina
.
ME_AADL
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
use
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
-- use Ocarina.Backends.Properties;
-- use Ocarina.Backends.Deos_Conf.Mapping;
package
AINU
renames
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nutils
;
package
XTN
renames
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
Root_Node
:
Node_Id
:=
No_Node
;
HM_Node
:
Node_Id
:=
No_Node
;
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_Bus_Instance
(
E
:
Node_Id
);
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
);
-----------
-- 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
Root_Node
:=
Root_System
(
E
);
Visit
(
Root_Node
);
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_Bus
=>
Visit_Bus_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
S
:
Node_Id
;
begin
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.
Visit
(
Corresponding_Instance
(
S
));
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
end
Visit_Process_Instance
;
---------------------------
-- Visit_System_Instance --
---------------------------
procedure
Visit_System_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
begin
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
;
end
Visit_System_Instance
;
------------------------
-- Visit_Bus_Instance --
------------------------
procedure
Visit_Bus_Instance
(
E
:
Node_Id
)
is
pragma
Unreferenced
(
E
);
begin
null
;
end
Visit_Bus_Instance
;
------------------------------
-- Visit_Processor_Instance --
------------------------------
procedure
Visit_Processor_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
U
:
Node_Id
;
P
:
Node_Id
;
begin
U
:=
XTN
.
Unit
(
Backend_Node
(
Identifier
(
E
)));
P
:=
XTN
.
Node
(
Backend_Node
(
Identifier
(
E
)));
Push_Entity
(
P
);
Push_Entity
(
U
);
Current_XML_Node
:=
XTN
.
Root_Node
(
XTN
.
XML_File
(
U
));
HM_Node
:=
Make_XML_Node
(
"HealthMonitoring"
);
Append_Node_To_List
(
HM_Node
,
XTN
.
Subitems
(
Current_XML_Node
));
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_Virtual_Processor
(
Corresponding_Instance
(
S
))
then
Visit
(
Corresponding_Instance
(
S
));
end
if
;
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
Pop_Entity
;
Pop_Entity
;
end
Visit_Processor_Instance
;
--------------------------------------
-- Visit_Virtual_Processor_Instance --
--------------------------------------
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
begin
if
not
AINU
.
Is_Empty
(
Subcomponents
(
E
))
then
S
:=
First_Node
(
Subcomponents
(
E
));
while
Present
(
S
)
loop
Visit
(
Corresponding_Instance
(
S
));
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
end
Visit_Virtual_Processor_Instance
;
end
Ocarina
.
Backends
.
Deos_Conf
.
Hm
;
src/backends/ocarina-backends-deos_conf-hm.ads
0 → 100644
View file @
ab215fe1
package
Ocarina
.
Backends
.
Deos_Conf
.
Hm
is
procedure
Visit
(
E
:
Node_Id
);
end
Ocarina
.
Backends
.
Deos_Conf
.
Hm
;
src/backends/ocarina-backends-deos_conf-partitions.adb
View file @
ab215fe1
...
...
@@ -24,6 +24,7 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
Root_Node
:
Node_Id
:=
No_Node
;
Partitions_Node
:
Node_Id
:=
No_Node
;
Memory_Regions
:
Node_Id
:=
No_Node
;
procedure
Visit_Architecture_Instance
(
E
:
Node_Id
);
procedure
Visit_Component_Instance
(
E
:
Node_Id
);
...
...
@@ -36,6 +37,19 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
Current_Node
:
Node_Id
:=
Root_Node
)
return
Node_Id
;
function
Make_Default_Memory_Region
return
Node_Id
;
--------------------------------
-- Make_Default_Memory_Region --
--------------------------------
function
Make_Default_Memory_Region
return
Node_Id
is
N
:
Node_Id
;
begin
N
:=
Make_XML_Node
(
"MemoryRegion"
);
return
N
;
end
Make_Default_Memory_Region
;
-----------------------------
-- Find_Associated_Process --
-----------------------------
...
...
@@ -197,17 +211,37 @@ package body Ocarina.Backends.Deos_Conf.Partitions is
(
Partitions_Node
,
XTN
.
Subitems
(
Current_XML_Node
));
--
-- First, make the <Partition/> nodes
--
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.
Visit
(
Corresponding_Instance
(
S
));
if
AINU
.
Is_Virtual_Processor
(
Corresponding_Instance
(
S
))
then
Visit
(
Corresponding_Instance
(
S
));
end
if
;
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
--
-- Then, make the <MemoryRegions> nodes
--
Memory_Regions
:=
Make_XML_Node
(
"MemoryRegions"
);
Append_Node_To_List
(
Make_Default_Memory_Region
,
XTN
.
Subitems
(
Memory_Regions
));
Append_Node_To_List
(
Memory_Regions
,
XTN
.
Subitems
(
Partitions_Node
));
Pop_Entity
;
Pop_Entity
;
end
Visit_Processor_Instance
;
...
...
src/backends/ocarina-backends-deos_conf-schedule.adb
0 → 100644
View file @
ab215fe1
-- 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.Properties;
with
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
-- with Ocarina.Backends.Deos_Conf.Mapping;
package
body
Ocarina
.
Backends
.
Deos_Conf
.
Schedule
is
-- use Locations;
use
Ocarina
.
ME_AADL
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nodes
;
use
Ocarina
.
ME_AADL
.
AADL_Instances
.
Entities
;
use
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
-- use Ocarina.Backends.Properties;
-- use Ocarina.Backends.Deos_Conf.Mapping;
package
AINU
renames
Ocarina
.
ME_AADL
.
AADL_Instances
.
Nutils
;
package
XTN
renames
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
Root_Node
:
Node_Id
:=
No_Node
;
Schedule_Node
:
Node_Id
:=
No_Node
;
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_Bus_Instance
(
E
:
Node_Id
);
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
);
-----------
-- 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
Root_Node
:=
Root_System
(
E
);
Visit
(
Root_Node
);
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_Bus
=>
Visit_Bus_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
S
:
Node_Id
;
begin
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.
Visit
(
Corresponding_Instance
(
S
));
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
end
Visit_Process_Instance
;
---------------------------
-- Visit_System_Instance --
---------------------------
procedure
Visit_System_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
begin
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
;
end
Visit_System_Instance
;
------------------------
-- Visit_Bus_Instance --
------------------------
procedure
Visit_Bus_Instance
(
E
:
Node_Id
)
is
pragma
Unreferenced
(
E
);
begin
null
;
end
Visit_Bus_Instance
;
------------------------------
-- Visit_Processor_Instance --
------------------------------
procedure
Visit_Processor_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
U
:
Node_Id
;
P
:
Node_Id
;
begin
U
:=
XTN
.
Unit
(
Backend_Node
(
Identifier
(
E
)));
P
:=
XTN
.
Node
(
Backend_Node
(
Identifier
(
E
)));
Push_Entity
(
P
);
Push_Entity
(
U
);
Current_XML_Node
:=
XTN
.
Root_Node
(
XTN
.
XML_File
(
U
));
Schedule_Node
:=
Make_XML_Node
(
"Schedule"
);
Append_Node_To_List
(
Schedule_Node
,
XTN
.
Subitems
(
Current_XML_Node
));
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_Virtual_Processor
(
Corresponding_Instance
(
S
))
then
Visit
(
Corresponding_Instance
(
S
));
end
if
;
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
Pop_Entity
;
Pop_Entity
;
end
Visit_Processor_Instance
;
--------------------------------------
-- Visit_Virtual_Processor_Instance --
--------------------------------------
procedure
Visit_Virtual_Processor_Instance
(
E
:
Node_Id
)
is
S
:
Node_Id
;
begin
if
not
AINU
.
Is_Empty
(
Subcomponents
(
E
))
then
S
:=
First_Node
(
Subcomponents
(
E
));
while
Present
(
S
)
loop
Visit
(
Corresponding_Instance
(
S
));
S
:=
Next_Node
(
S
);
end
loop
;
end
if
;
end
Visit_Virtual_Processor_Instance
;
end
Ocarina
.
Backends
.
Deos_Conf
.
Schedule
;
src/backends/ocarina-backends-deos_conf-schedule.ads
0 → 100644
View file @
ab215fe1
package
Ocarina
.
Backends
.
Deos_Conf
.
Schedule
is
procedure
Visit
(
E
:
Node_Id
);
end
Ocarina
.
Backends
.
Deos_Conf
.
Schedule
;
src/backends/ocarina-backends-deos_conf.adb
View file @
ab215fe1
...
...
@@ -37,6 +37,8 @@ with Ocarina.Backends.Expander;
with
Ocarina
.
Backends
.
XML_Tree
.
Nodes
;
with
Ocarina
.
Backends
.
XML_Tree
.
Nutils
;
with
Ocarina
.
Backends
.
XML_Tree
.
Generator
;
with
Ocarina
.
Backends
.
Deos_Conf
.
HM
;
with
Ocarina
.
Backends
.
Deos_Conf
.
Schedule
;
with
Ocarina
.
Backends
.
Deos_Conf
.
Naming
;
with
Ocarina
.
Backends
.
Deos_Conf
.
Partitions
;
with
Ocarina
.
Backends
.
Utils
;
...
...
@@ -158,6 +160,8 @@ package body Ocarina.Backends.Deos_Conf is
Deos_Conf
.
Naming
.
Visit
(
E
);
Deos_Conf
.
Partitions
.
Visit
(
E
);
Deos_Conf
.
Schedule
.
Visit
(
E
);
Deos_Conf
.
HM
.
Visit
(
E
);
XTU
.
Pop_Entity
;
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment