Changes between Version 5 and Version 6 of DsxvmMappingInfoStructure
- Timestamp:
- Aug 30, 2012, 2:54:38 PM (12 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
DsxvmMappingInfoStructure
v5 v6 7 7 Dsx-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. 8 8 9 TODO: hypothesis: clustered _architecture, etc.9 TODO: hypothesis: clustered architecture, etc. 10 10 11 11 = Document XML Structure = 12 12 13 In order to simplify the parsing of the document, the order between elements has to be respected.14 This document containtwo 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 13 In order to simplify the parsing of the document, the order between elements in the xml file has to be respected. 14 This 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. 17 17 18 18 == The mapping_info element == 19 19 20 20 The 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. 25 25 26 26 The `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. 30 30 31 31 32 32 == The clusterset (cluster set) element == 33 33 34 This element contains no attribute, and contains the following element s:34 This element contains no attribute, and contains the following element(s): 35 35 * 1 to ''n'' `cluster` element(s) 36 36 … … 39 39 40 40 This 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'' ( nbeing 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. 42 42 43 The cluster element contains the following element s:43 The cluster element contains the following element(s): 44 44 * 0 to ''n'' `pseg` element(s) 45 * 0 to ''n'' `proc` element(s) .45 * 0 to ''n'' `proc` element(s) 46 46 * 0 to ''n'' `periph` element(s) 47 47 … … 50 50 51 51 This 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. 56 56 57 57 … … 61 61 * `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. 62 62 63 The proc element contains the following element :63 The proc element contains the following element(s): 64 64 * 0 to ''n'' `irq` element(s). 65 65 … … 96 96 == The globalset (global set) element == 97 97 98 This element contains no attribute, and contains the following element s:98 This element contains no attribute, and contains the following element(s): 99 99 100 100 * 0 to ''n'' `vseg` element(s) … … 115 115 * `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) 116 116 117 The vseg element contains the following element s:117 The vseg element contains the following element(s): 118 118 * 1 to ''n'' `vobj` element(s) 119 119 … … 140 140 == The vspaceset (virtual space set) element == 141 141 142 The vspaceset element has no attribute and contains the following element s:142 The vspaceset element has no attribute and contains the following element(s): 143 143 * 0 to ''n'' `vspace` element(s) 144 144 … … 148 148 This element contains the following attributes: 149 149 * `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. 151 151 152 The vspace element contains the following element s:152 The vspace element contains the following element(s): 153 153 * 0 to ''n'' `vseg` element(s) 154 154 * 0 to ''n'' `task` element(s) … … 163 163 * `stackname`: name of the vobj on which to place the task's stack. 164 164 * `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. 166 166 167 167