Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Merge branch 'master' of git+ssh://scm.gforge.inria.fr//gitroot/simgrid/simgrid
[simgrid.git] / src / smpi / private.hpp
index 6d3e172..a5c1aed 100644 (file)
@@ -7,17 +7,30 @@
 #define SMPI_PRIVATE_HPP
 
 #include "src/instr/instr_smpi.h"
+#include <unordered_map>
+#include <vector>
 
-#ifdef HAVE_PAPI
+/**
+ * Get the address of the beginning of the memory page where addr is located.
+ * Note that we use an integer division here, so (a/b)*b is not a, unless a%b == 0
+ *
+ * This is used when privatizing.
+ */
+#define TOPAGE(addr) (void *)(((unsigned long)(addr) / xbt_pagesize) * xbt_pagesize)
+
+#if HAVE_PAPI
 typedef 
     std::vector<std::pair</* counter name */std::string, /* counter value */long long>> papi_counter_t;
-XBT_PRIVATE papi_counter_t& smpi_process_counter_data(void);
-XBT_PRIVATE int smpi_process_event_set(void);
+XBT_PRIVATE papi_counter_t& smpi_process_papi_counters();
+XBT_PRIVATE int smpi_process_papi_event_set();
 #endif
 
-extern std::map<std::string, double> location2speedup;
+extern std::unordered_map<std::string, double> location2speedup;
 
 /** @brief Returns the last call location (filename, linenumber). Process-specific. */
-XBT_PUBLIC(smpi_trace_call_location_t*) smpi_process_get_call_location(void);
+extern "C" {
+XBT_PUBLIC(smpi_trace_call_location_t*) smpi_process_get_call_location();
 XBT_PUBLIC(smpi_trace_call_location_t*) smpi_trace_get_call_location();
+}
 #endif
+