Index: soft/giet_vm/xml/mapping_info.h
===================================================================
--- soft/giet_vm/xml/mapping_info.h	(revision 158)
+++ soft/giet_vm/xml/mapping_info.h	(revision 160)
@@ -18,6 +18,6 @@
 // - mapping_vspace_t   vspace[vspaces]     (MAPPING_VSPACE_SIZE * vspaces)
 // - mapping_vseg_t     vseg[vsegs]         (MAPPING_VSEG_SIZE * vsegs)
+// - mapping_vseg_t     vobj[vsegs]         (MAPPING_VOBJ_SIZE * vsegs)
 // - mapping_task_t     task[tasks]         (MAPPING_TASK_SIZE * tasks)
-// - mapping_mwmr_t     mwmr[mwmrs]         (MAPPING_MWMR_SIZE * mwmrs)
 //
 // The number of clusters and the number of vspaces are defined in the header.
@@ -43,4 +43,5 @@
 #define MAPPING_VSPACE_SIZE     sizeof(mapping_vspace_t)
 #define MAPPING_VSEG_SIZE	    sizeof(mapping_vseg_t)
+#define MAPPING_VOBJ_SIZE	    sizeof(mapping_vobj_t)
 #define MAPPING_PSEG_SIZE	    sizeof(mapping_pseg_t)
 #define MAPPING_TASK_SIZE	    sizeof(mapping_task_t)
@@ -54,4 +55,16 @@
 #define OUT_MAPPING_SIGNATURE   0xBABEF00D
 
+enum 
+{
+    ELF = 0,    //loadable code object
+    PTAB,       //page table 
+    PERI,       //hardware component
+    MWMR,       //MWMR channel
+    LOCK,       //Lock
+    BUFFER,     //Any "no intialiasation needed" objects (stacks...)
+    BARRIER     //Barrier
+};
+
+
 ///////////////////////////////
 typedef struct mapping_header_s
@@ -63,8 +76,8 @@
 	unsigned int	globals;		// number of vsegs mapped in all vspaces
 	unsigned int	vspaces;		// number of virtual spaces
-	unsigned int	vsegs;  		// total number of virtual segments (for all vspaces
+	unsigned int	vsegs;  		// total number of virtual segments (for all vspaces)
+	unsigned int	vobjs;  		// total number of virtual memory objects (for all vspaces)
 	unsigned int	tasks;  		// total number of tasks (for all vspaces)
     char            name[32];       // mapping name
-    char            syspath[64];    // path for the system binary code ("sys.bin")
 } mapping_header_t;
 
@@ -90,12 +103,12 @@
 {
     char            name[32];       // virtual space name
-    char            binpath[64];    // pathname to the binary code ("app.bin")
+    unsigned int    funcs_offset;   // offset of the vobj containing the function entry table (relative to vobj_offset)
 	unsigned int	vsegs;		    // number of private virtual segments
+	unsigned int	vobjs;		    // number of vobjs channels
 	unsigned int	tasks;		    // number of tasks
-	unsigned int	mwmrs;		    // number of mwmr channels
 	unsigned int	ttys;		    // number of required TTY terminals
     unsigned int    vseg_offset;    // index of first vseg in vspace 
+    unsigned int    vobj_offset;    // index of first vobjs in vspace
     unsigned int    task_offset;    // index of first task in vspace
-    unsigned int    mwmr_offset;    // index of first mwmr in vspace
 } mapping_vspace_t;
 
@@ -110,5 +123,6 @@
 	unsigned char   mode;	        // C-X-W-U flags
     unsigned char   ident;          // identity mapping if non zero
-    unsigned char   mwmr;           // mwmr channel if non zero
+	unsigned int	vobjs;		    // number of vobjs channels
+    unsigned int    vobj_offset;    // index of first vobjs in vspace
     unsigned char   reserved;       // unused
 } mapping_vseg_t;
@@ -120,8 +134,20 @@
 	unsigned int	clusterid;	    // physical cluster index
 	unsigned int	proclocid;      // processor local index (inside cluster)
-    unsigned int    vseglocid;      // stack vseg index in vspace
+    unsigned int    vobjlocid;      // stack vobj index in vspace
     unsigned int    startid;        // index in start_vector (in seg_data)
     unsigned int    ttylocid;       // tty index (inside the vspace)
 } mapping_task_t;
+
+/////////////////////////////
+typedef struct mapping_vobj_s 
+{
+    char            name[32];       // vobj name (unique in a vspace)
+    char            binpath[64];    // path for the binary code ("*.bin")
+	unsigned int    type;           // type of vobj
+	unsigned int	length;         // size (bytes)
+	unsigned int	align;          // required alignement (logarithm of 2)
+	unsigned int	vaddr;          // virtual addresse of the vobj location (bytes)
+	unsigned int	paddr;          // physical addresse of the vobj location (bytes)
+} mapping_vobj_t;
 
 #endif
