A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[mc] ELF file list, stylistic change
[simgrid.git]
/
src
/
mc
/
Process.cpp
diff --git
a/src/mc/Process.cpp
b/src/mc/Process.cpp
index
5360933
..
a04ec5c
100644
(file)
--- a/
src/mc/Process.cpp
+++ b/
src/mc/Process.cpp
@@
-29,7
+29,6
@@
#include <xbt/base.h>
#include <xbt/mmalloc.h>
#include <xbt/base.h>
#include <xbt/mmalloc.h>
-#include "src/mc/mc_object_info.h"
#include "src/mc/mc_unw.h"
#include "src/mc/mc_snapshot.h"
#include "src/mc/mc_ignore.h"
#include "src/mc/mc_unw.h"
#include "src/mc/mc_snapshot.h"
#include "src/mc/mc_ignore.h"
@@
-47,12
+46,18
@@
extern "C" {
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_process, mc,
"MC process information");
XBT_LOG_NEW_DEFAULT_SUBCATEGORY(mc_process, mc,
"MC process information");
+}
+
// ***** Helper stuff
// ***** Helper stuff
+namespace simgrid {
+namespace mc {
+
#define SO_RE "\\.so[\\.0-9]*$"
#define VERSION_RE "-[\\.0-9-]*$"
#define SO_RE "\\.so[\\.0-9]*$"
#define VERSION_RE "-[\\.0-9-]*$"
-static const char *const FILTERED_LIBS[] = {
+// In lexicographic order (but this is currently not used in the code):
+static const char *const filtered_libraries[] = {
"ld",
"libbz2",
"libboost_chrono",
"ld",
"libbz2",
"libboost_chrono",
@@
-82,14
+87,14
@@
static const char *const FILTERED_LIBS[] = {
"libz"
};
"libz"
};
-static bool
MC_
is_simgrid_lib(const char* libname)
+static bool is_simgrid_lib(const char* libname)
{
return !strcmp(libname, "libsimgrid");
}
{
return !strcmp(libname, "libsimgrid");
}
-static bool
MC_
is_filtered_lib(const char* libname)
+static bool is_filtered_lib(const char* libname)
{
{
- for (const char* filtered_lib :
FILTERED_LIBS
)
+ for (const char* filtered_lib :
filtered_libraries
)
if (strcmp(libname, filtered_lib)==0)
return true;
return false;
if (strcmp(libname, filtered_lib)==0)
return true;
return false;
@@
-100,7
+105,7
@@
struct s_mc_memory_map_re {
regex_t version_re;
};
regex_t version_re;
};
-static char*
MC_
get_lib_name(const char* pathname, struct s_mc_memory_map_re* res)
+static char* get_lib_name(const char* pathname, struct s_mc_memory_map_re* res)
{
const char* map_basename = xbt_basename((char*) pathname);
{
const char* map_basename = xbt_basename((char*) pathname);
@@
-130,9
+135,9
@@
static ssize_t pread_whole(int fd, void *buf, size_t count, std::uint64_t offset
count -= res;
buffer += res;
offset += res;
count -= res;
buffer += res;
offset += res;
- } else if (res==0)
{
+ } else if (res==0)
return -1;
return -1;
-
}
else if (errno != EINTR) {
+ else if (errno != EINTR) {
perror("pread_whole");
return -1;
}
perror("pread_whole");
return -1;
}
@@
-150,11
+155,10
@@
static ssize_t pwrite_whole(int fd, const void *buf, size_t count, off_t offset)
count -= res;
buffer += res;
offset += res;
count -= res;
buffer += res;
offset += res;
- } else if (res==0)
{
+ } else if (res==0)
return -1;
return -1;
- } else if (errno != EINTR) {
+ else if (errno != EINTR)
return -1;
return -1;
- }
}
return real_count;
}
}
return real_count;
}
@@
-163,7
+167,7
@@
static pthread_once_t zero_buffer_flag = PTHREAD_ONCE_INIT;
static const void* zero_buffer;
static const size_t zero_buffer_size = 10 * 4096;
static const void* zero_buffer;
static const size_t zero_buffer_size = 10 * 4096;
-static void
MC_
zero_buffer_init(void)
+static void zero_buffer_init(void)
{
int fd = open("/dev/zero", O_RDONLY);
if (fd<0)
{
int fd = open("/dev/zero", O_RDONLY);
if (fd<0)
@@
-182,11
+186,6
@@
int open_process_file(pid_t pid, const char* file, int flags)
return open(buff, flags);
}
return open(buff, flags);
}
-}
-
-namespace simgrid {
-namespace mc {
-
int open_vm(pid_t pid, int flags)
{
const size_t buffer_size = 30;
int open_vm(pid_t pid, int flags)
{
const size_t buffer_size = 30;
@@
-199,15
+198,8
@@
int open_vm(pid_t pid, int flags)
return open(buffer, flags);
}
return open(buffer, flags);
}
-
-}
-}
-
// ***** Process
// ***** Process
-namespace simgrid {
-namespace mc {
-
Process::Process(pid_t pid, int sockfd) :
AddressSpace(this),pid_(pid), socket_(sockfd), running_(true)
{}
Process::Process(pid_t pid, int sockfd) :
AddressSpace(this),pid_(pid), socket_(sockfd), running_(true)
{}
@@
-247,9
+239,8
@@
Process::~Process()
this->maestro_stack_start_ = nullptr;
this->maestro_stack_end_ = nullptr;
this->maestro_stack_start_ = nullptr;
this->maestro_stack_end_ = nullptr;
- if (this->memory_file >= 0)
{
+ if (this->memory_file >= 0)
close(this->memory_file);
close(this->memory_file);
- }
if (this->unw_underlying_addr_space != unw_local_addr_space) {
unw_destroy_addr_space(this->unw_underlying_addr_space);
if (this->unw_underlying_addr_space != unw_local_addr_space) {
unw_destroy_addr_space(this->unw_underlying_addr_space);
@@
-323,7
+314,7
@@
void Process::init_memory_map_info()
const char* current_name = nullptr;
const char* current_name = nullptr;
- this->object_infos.
resize(0
);
+ this->object_infos.
clear(
);
for (size_t i=0; i < maps.size(); i++) {
simgrid::xbt::VmMap const& reg = maps[i];
for (size_t i=0; i < maps.size(); i++) {
simgrid::xbt::VmMap const& reg = maps[i];
@@
-355,21
+346,21
@@
void Process::init_memory_map_info()
const bool is_executable = !i;
char* libname = nullptr;
if (!is_executable) {
const bool is_executable = !i;
char* libname = nullptr;
if (!is_executable) {
- libname =
MC_
get_lib_name(pathname, &res);
+ libname = get_lib_name(pathname, &res);
if(!libname)
continue;
if(!libname)
continue;
- if (
MC_
is_filtered_lib(libname)) {
+ if (is_filtered_lib(libname)) {
free(libname);
continue;
}
}
std::shared_ptr<simgrid::mc::ObjectInformation> info =
free(libname);
continue;
}
}
std::shared_ptr<simgrid::mc::ObjectInformation> info =
-
MC_find_object_info
(this->memory_map_, pathname);
+
simgrid::mc::createObjectInformation
(this->memory_map_, pathname);
this->object_infos.push_back(info);
if (is_executable)
this->binary_info = info;
this->object_infos.push_back(info);
if (is_executable)
this->binary_info = info;
- else if (libname &&
MC_
is_simgrid_lib(libname))
+ else if (libname && is_simgrid_lib(libname))
this->libsimgrid_info = info;
free(libname);
}
this->libsimgrid_info = info;
free(libname);
}
@@
-379,7
+370,7
@@
void Process::init_memory_map_info()
// Resolve time (including accross differents objects):
for (auto const& object_info : this->object_infos)
// Resolve time (including accross differents objects):
for (auto const& object_info : this->object_infos)
-
MC_post_process_object_info
(this, object_info.get());
+
postProcessObjectInformation
(this, object_info.get());
xbt_assert(this->maestro_stack_start_, "Did not find maestro_stack_start");
xbt_assert(this->maestro_stack_end_, "Did not find maestro_stack_end");
xbt_assert(this->maestro_stack_start_, "Did not find maestro_stack_start");
xbt_assert(this->maestro_stack_end_, "Did not find maestro_stack_end");
@@
-389,34
+380,28
@@
void Process::init_memory_map_info()
std::shared_ptr<simgrid::mc::ObjectInformation> Process::find_object_info(RemotePtr<void> addr) const
{
std::shared_ptr<simgrid::mc::ObjectInformation> Process::find_object_info(RemotePtr<void> addr) const
{
- for (auto const& object_info : this->object_infos)
{
+ for (auto const& object_info : this->object_infos)
if (addr.address() >= (std::uint64_t)object_info->start
if (addr.address() >= (std::uint64_t)object_info->start
- && addr.address() <= (std::uint64_t)object_info->end)
{
+ && addr.address() <= (std::uint64_t)object_info->end)
return object_info;
return object_info;
- }
- }
return nullptr;
}
std::shared_ptr<ObjectInformation> Process::find_object_info_exec(RemotePtr<void> addr) const
{
return nullptr;
}
std::shared_ptr<ObjectInformation> Process::find_object_info_exec(RemotePtr<void> addr) const
{
- for (std::shared_ptr<ObjectInformation> const& info : this->object_infos)
{
+ for (std::shared_ptr<ObjectInformation> const& info : this->object_infos)
if (addr.address() >= (std::uint64_t) info->start_exec
if (addr.address() >= (std::uint64_t) info->start_exec
- && addr.address() <= (std::uint64_t) info->end_exec)
{
+ && addr.address() <= (std::uint64_t) info->end_exec)
return info;
return info;
- }
- }
return nullptr;
}
std::shared_ptr<ObjectInformation> Process::find_object_info_rw(RemotePtr<void> addr) const
{
return nullptr;
}
std::shared_ptr<ObjectInformation> Process::find_object_info_rw(RemotePtr<void> addr) const
{
- for (std::shared_ptr<ObjectInformation> const& info : this->object_infos)
{
+ for (std::shared_ptr<ObjectInformation> const& info : this->object_infos)
if (addr.address() >= (std::uint64_t)info->start_rw
if (addr.address() >= (std::uint64_t)info->start_rw
- && addr.address() <= (std::uint64_t)info->end_rw)
{
+ && addr.address() <= (std::uint64_t)info->end_rw)
return info;
return info;
- }
- }
return nullptr;
}
return nullptr;
}
@@
-503,7
+488,7
@@
const void *Process::read_bytes(void* buffer, std::size_t size,
std::shared_ptr<simgrid::mc::ObjectInformation> const& info =
this->find_object_info_rw((void*)address.address());
// Segment overlap is not handled.
std::shared_ptr<simgrid::mc::ObjectInformation> const& info =
this->find_object_info_rw((void*)address.address());
// Segment overlap is not handled.
-#if
def
HAVE_SMPI
+#if HAVE_SMPI
if (info.get() && this->privatized(*info)) {
if (process_index < 0)
xbt_die("Missing process index");
if (info.get() && this->privatized(*info)) {
if (process_index < 0)
xbt_die("Missing process index");
@@
-546,7
+531,7
@@
void Process::write_bytes(const void* buffer, size_t len, RemotePtr<void> addres
void Process::clear_bytes(RemotePtr<void> address, size_t len)
{
void Process::clear_bytes(RemotePtr<void> address, size_t len)
{
- pthread_once(&zero_buffer_flag,
MC_
zero_buffer_init);
+ pthread_once(&zero_buffer_flag, zero_buffer_init);
while (len) {
size_t s = len > zero_buffer_size ? zero_buffer_size : len;
this->write_bytes(zero_buffer, s, address);
while (len) {
size_t s = len > zero_buffer_size ? zero_buffer_size : len;
this->write_bytes(zero_buffer, s, address);
@@
-589,16
+574,14
@@
void Process::ignore_region(std::uint64_t addr, std::size_t size)
std::size_t position;
if (current_region->addr == addr) {
std::size_t position;
if (current_region->addr == addr) {
- if (current_region->size < size)
{
+ if (current_region->size < size)
position = cursor + 1;
position = cursor + 1;
- } else {
+ else
position = cursor;
position = cursor;
- }
- } else if (current_region->addr < addr) {
+ } else if (current_region->addr < addr)
position = cursor + 1;
position = cursor + 1;
- } else {
+ else
position = cursor;
position = cursor;
- }
ignored_regions_.insert(
ignored_regions_.begin() + position, region);
}
ignored_regions_.insert(
ignored_regions_.begin() + position, region);
}