Changes between Version 5 and Version 6 of DsxvmMappingInfoStructure


Ignore:
Timestamp:
Aug 30, 2012, 2:54:38 PM (12 years ago)
Author:
meunier
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • DsxvmMappingInfoStructure

    v5 v6  
    77Dsx-vm needs to have a way to communicate with the operating system to specify how to map code, data and taks on the architecture. To this end, an xml data structure has been defined, and is presented below. This xml file is produced by Dsx-vm and read by the operating system and used in particular for page tables generation and thread mapping on processors.
    88
    9 TODO: hypothesis: clustered_architecture, etc.
     9TODO: hypothesis: clustered architecture, etc.
    1010
    1111= Document XML Structure =
    1212
    13 In order to simplify the parsing of the document, the order between elements has to be respected.
    14 This document contain two main descriptions:
    15  * a minimal description of the hardware : all elements described must exist on the targeted architecture. Non described element will not be used by the soft.
    16  * a description of the software mapping on the hardware
     13In order to simplify the parsing of the document, the order between elements in the xml file has to be respected.
     14This file describing the mapping information contains two main descriptions:
     15 * a minimal description of the hardware: all elements described must exist on the targeted architecture. Non described elements will not be used by the operating system.
     16 * a description of the software mapping on the hardware.
    1717
    1818== The mapping_info element ==
    1919
    2020The two descriptions are regrouped in the `mapping_info` element, which contains the following attributes:
    21  * `name`: the name of the mapping described
    22  * `signature`: a way to check that we are handling a mapping info structure. It must be equal to "0xdeadbeef"
    23  * `clusters`: the number of clusters in the targeted architecture
    24  * `vpsaces`: the number of vspaces defined. This number is typically equal to the number of applications
     21 * `name`: the name of the mapping described.
     22 * `signature`: a way to check that we are handling a mapping info structure. It must be equal to "0xdeadbeef".
     23 * `clusters`: the number of clusters in the targeted architecture.
     24 * `vpsaces`: the number of vspaces defined. This number is typically equal to the number of applications.
    2525
    2626The `mapping_info` element contains the following elements:
    27  * a `clusterset` element, describing the targeted hardware
    28  * a `globalset` element, describing the global segments, i.e. the segments replicated in all virtual spaces (typically the kernel code)
    29  * a `vspaceset` element, describing the mapping for all virtual spaces
     27 * a `clusterset` element, describing the targeted hardware.
     28 * a `globalset` element, describing the global segments, i.e. the segments replicated in all virtual spaces (typically the kernel code).
     29 * a `vspaceset` element, describing the mapping for all virtual spaces.
    3030
    3131
    3232== The clusterset (cluster set) element ==
    3333
    34 This element contains no attribute, and contains the following elements:
     34This element contains no attribute, and contains the following element(s):
    3535 * 1 to ''n'' `cluster` element(s)
    3636
     
    3939
    4040This element contains the following attribute:
    41  * `index`: the cluster index, or ''id''. It is unique for each cluster and must range from 0 to ''n - 1'' (n being the number of cluster). The cluster index makes the correspondance with the cluster id in the architecture.
     41 * `index`: the cluster index, or ''id''. It is unique for each cluster and must range from 0 to ''n - 1'' (with ''n'' being the number of cluster). The cluster index makes the correspondance with the cluster id in the architecture.
    4242
    43 The cluster element contains the following elements:
     43The cluster element contains the following element(s):
    4444 * 0 to ''n'' `pseg` element(s)
    45  * 0 to ''n'' `proc` element(s).
     45 * 0 to ''n'' `proc` element(s)
    4646 * 0 to ''n'' `periph` element(s)
    4747
     
    5050
    5151This element contains the following attributes:
    52  * `name`: name of the segment. The name of the segment is not related to any segment name in the architecture. It is used to associate virtual segments on physical segments inside the mapping info file. The name is local to the cluster, i.e. two different cluster can have two pseg with the same name.
    53  * `base`: base of the physical segment.
    54  * `type`: type of the segment. It can be one of `RAM`, `ROM`, `PERI`
    55  * `length`: size of the segment
     52 * `name`: name of the segment. The name of the segment is not related to any segment name in the architecture. It is used to associate virtual segments on physical segments inside the mapping info file. The name is local to the cluster, i.e. two different clusters can have two pseg with the same name.
     53 * `base`: base address of the physical segment.
     54 * `type`: type of the segment. It can be one of `RAM`, `ROM`, `PERI`.
     55 * `length`: size of the segment.
    5656
    5757
     
    6161 * `index`: the processor index, or ''id''. It is unique for each processor and must range from 0 to ''n - 1'' inside the cluster. The index corresponds to the processor id in the architecture.
    6262
    63 The proc element contains the following element:
     63The proc element contains the following element(s):
    6464 * 0 to ''n'' `irq` element(s).
    6565
     
    9696== The globalset (global set) element ==
    9797
    98 This element contains no attribute, and contains the following elements:
     98This element contains no attribute, and contains the following element(s):
    9999
    100100 * 0 to ''n'' `vseg` element(s)
     
    115115 * `ident`: (optional) is 1 if the segment is an identity segment, 0 otherwise. An identity virtual segment is a virtual segment whose base address is the same as the one of the physical segment it is mapped on. This field is not necessarily required (TODO : à vérifier si c'est nécessaire et dans ce cas pourquoi)
    116116
    117 The vseg element contains the following elements:
     117The vseg element contains the following element(s):
    118118 * 1 to ''n'' `vobj` element(s)
    119119
     
    140140== The vspaceset (virtual space set) element ==
    141141
    142 The vspaceset element has no attribute and contains the following elements:
     142The vspaceset element has no attribute and contains the following element(s):
    143143 * 0 to ''n'' `vspace` element(s)
    144144
     
    148148This element contains the following attributes:
    149149 * `name`: name of the virtual space.
    150  * `startname`: name of the data section of the application (a vspace corresponds to an application). This section will contain at its top the table of task function entry.
     150 * `startname`: name of the data section of the virtual space (a vspace corresponds to one application). The operating system will load at the top of this section a table containing for each task the first function to execute. This table is called the task function entry table.
    151151
    152 The vspace element contains the following elements:
     152The vspace element contains the following element(s):
    153153 * 0 to ''n'' `vseg` element(s)
    154154 * 0 to ''n'' `task` element(s)
     
    163163 * `stackname`: name of the vobj on which to place the task's stack.
    164164 * `usetty`: if 1 the task a tty will be reserved for the task, 0 otherwise.
    165  * `startid`: indicates the index in the `startname` vobj for this task function entry.
     165 * `startid`: indicates the index of the function to execute in the task function entry table of the corresponding vspace.
    166166
    167167