Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge pull request #17 from mpoquet/master
[simgrid.git] / src / mc / mc_memory_map.h
index 12da85f..21f2bdd 100644 (file)
@@ -4,46 +4,44 @@
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
-#ifndef MC_MEMORY_MAP_H
-#define MC_MEMORY_MAP_H
+#ifndef SIMGRID_MC_MEMORY_MAP_H
+#define SIMGRID_MC_MEMORY_MAP_H
+
+#include <cstdint>
+
+#include <string>
+#include <vector>
 
 #include <sys/types.h>
 
 #include <simgrid_config.h>
 #include "mc_forward.h"
 
-SG_BEGIN_DECL()
-
-/** \file
- *   These functions and data structures implements a binary interface for
- *   the proc maps ascii interface                                           */
+namespace simgrid {
+namespace mc {
 
-/* Each field is defined as documented in proc's manual page  */
-struct s_map_region {
-
-  void *start_addr;             /* Start address of the map */
-  void *end_addr;               /* End address of the map */
+/** An virtual memory map entry from /proc/$pid/maps */
+struct VmMap {
+  std::uint64_t start_addr, end_addr;
   int prot;                     /* Memory protection */
   int flags;                    /* Additional memory flags */
-  void *offset;                 /* Offset in the file/whatever */
+  std::uint64_t offset;         /* Offset in the file/whatever */
   char dev_major;               /* Major of the device */
   char dev_minor;               /* Minor of the device */
   unsigned long inode;          /* Inode in the device */
-  char *pathname;               /* Path name of the mapped file */
-
+  std::string pathname;         /* Path name of the mapped file */
 };
-typedef struct s_map_region s_map_region_t, *map_region_t;
 
-struct s_memory_map {
+std::vector<VmMap> get_memory_map(pid_t pid);
 
-  s_map_region_t *regions;      /* Pointer to an array of regions */
-  int mapsize;                  /* Number of regions in the memory */
+}
+}
 
-};
+extern "C" {
 
-memory_map_t MC_get_memory_map(pid_t pid);
-void MC_free_memory_map(memory_map_t map);
+XBT_INTERNAL void MC_find_object_address(
+  std::vector<simgrid::mc::VmMap> const& maps, mc_object_info_t result);
 
-SG_END_DECL()
+}
 
 #endif