namespace simgrid::mc {
-class ActorInformation {
-public:
- /** MCed address of the process */
- RemotePtr<kernel::actor::ActorImpl> address{nullptr};
- Remote<kernel::actor::ActorImpl> copy;
-
- /** Hostname (owned by `mc_model_checker->hostnames_`) */
- const std::string* hostname = nullptr;
- std::string name;
-
- void clear()
- {
- name.clear();
- address = nullptr;
- hostname = nullptr;
- }
-};
-
struct IgnoredRegion {
std::uint64_t addr;
std::size_t size;
*
* - reading from the process memory (`AddressSpace`);
* - accessing the system state of the process (heap, …);
- * - privatization;
* - stack unwinding;
* - etc.
*/
RemoteProcessMemory& operator=(RemoteProcessMemory const&) = delete;
RemoteProcessMemory& operator=(RemoteProcessMemory&&) = delete;
+ pid_t pid() const { return pid_; }
+ bool running() const { return running_; }
+ void terminate() { running_ = false; }
+ void handle_waitpid();
+
/* ************* */
/* Low-level API */
/* ************* */
// Heap access:
xbt_mheap_t get_heap()
{
- if (not(this->cache_flags_ & RemoteProcessMemory::cache_heap))
- this->refresh_heap();
+ if (not(cache_flags_ & RemoteProcessMemory::cache_heap))
+ refresh_heap();
return this->heap.get();
}
const malloc_info* get_malloc_info()
std::vector<IgnoredRegion> const& ignored_regions() const { return ignored_regions_; }
void ignore_region(std::uint64_t address, std::size_t size);
- pid_t pid() const { return pid_; }
-
bool in_maestro_stack(RemotePtr<void> p) const
{
return p >= this->maestro_stack_start_ && p < this->maestro_stack_end_;
}
- bool running() const { return running_; }
-
- void terminate() { running_ = false; }
-
void ignore_global_variable(const char* name) const
{
for (std::shared_ptr<ObjectInformation> const& info : this->object_infos)