SimGrid  3.18
Versatile Simulation of Distributed Systems
smpi_memory.cpp File Reference
#include <cerrno>
#include <climits>
#include <cstdint>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <deque>
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <vector>
#include <sys/mman.h>
#include <unistd.h>
#include "src/internal_config.h"
#include "src/xbt/memory_map.hpp"
#include "private.hpp"
#include "smpi_process.hpp"

Macros

#define asan_safe_memcpy(dest, src, n)   memcpy(dest, src, n)
 

Functions

 XBT_LOG_NEW_DEFAULT_SUBCATEGORY (smpi_memory, smpi, "Memory layout support for SMPI")
 
void smpi_get_executable_global_size ()
 
void smpi_switch_data_segment (int dest)
 Map a given SMPI privatization segment (make a SMPI process active) More...
 
void smpi_really_switch_data_segment (int dest)
 Map a given SMPI privatization segment (make a SMPI process active) even if SMPI thinks it is already active. More...
 
int smpi_is_privatization_file (char *file)
 
void smpi_backup_global_memory_segment ()
 
smpi_privatization_region_t smpi_init_global_memory_segment_process ()
 
void smpi_destroy_global_memory_segments ()
 

Variables

int smpi_loaded_page = -1
 
char * smpi_data_exe_start = nullptr
 
int smpi_data_exe_size = 0
 
int smpi_privatize_global_variables
 
static voidsmpi_data_exe_copy
 
static std::deque< s_smpi_privatization_region_tsmpi_privatization_regions
 
static const int PROT_RWX = (PROT_READ | PROT_WRITE | PROT_EXEC)
 
static const int PROT_RW = (PROT_READ | PROT_WRITE )
 
static XBT_ATTRIB_UNUSED const int PROT_RX = (PROT_READ | PROT_EXEC )
 

Macro Definition Documentation

◆ asan_safe_memcpy

#define asan_safe_memcpy (   dest,
  src,
  n 
)    memcpy(dest, src, n)

Function Documentation

◆ XBT_LOG_NEW_DEFAULT_SUBCATEGORY()

XBT_LOG_NEW_DEFAULT_SUBCATEGORY ( smpi_memory  ,
smpi  ,
"Memory layout support for SMPI"   
)

◆ smpi_get_executable_global_size()

void smpi_get_executable_global_size ( )

◆ smpi_switch_data_segment()

void smpi_switch_data_segment ( int  dest)

Map a given SMPI privatization segment (make a SMPI process active)

◆ smpi_really_switch_data_segment()

void smpi_really_switch_data_segment ( int  dest)

Map a given SMPI privatization segment (make a SMPI process active) even if SMPI thinks it is already active.

When doing a state restoration, the state of the restored variables might not be consistent with the state of the virtual memory. In this case, we to change the data segment.

◆ smpi_is_privatization_file()

int smpi_is_privatization_file ( char *  file)

◆ smpi_backup_global_memory_segment()

void smpi_backup_global_memory_segment ( )

◆ smpi_init_global_memory_segment_process()

smpi_privatization_region_t smpi_init_global_memory_segment_process ( )

◆ smpi_destroy_global_memory_segments()

void smpi_destroy_global_memory_segments ( )

Variable Documentation

◆ smpi_loaded_page

int smpi_loaded_page = -1

◆ smpi_data_exe_start

char* smpi_data_exe_start = nullptr

◆ smpi_data_exe_size

int smpi_data_exe_size = 0

◆ smpi_privatize_global_variables

int smpi_privatize_global_variables

◆ smpi_data_exe_copy

void* smpi_data_exe_copy
static

◆ smpi_privatization_regions

std::deque<s_smpi_privatization_region_t> smpi_privatization_regions
static

◆ PROT_RWX

const int PROT_RWX = (PROT_READ | PROT_WRITE | PROT_EXEC)
static

◆ PROT_RW

const int PROT_RW = (PROT_READ | PROT_WRITE )
static

◆ PROT_RX

XBT_ATTRIB_UNUSED const int PROT_RX = (PROT_READ | PROT_EXEC )
static