#include <sys/types.h>
#include <xbt/mmalloc.h>
+
+#ifdef HAVE_MC
#include "xbt/mmalloc/mmprivate.h"
+#endif
#include "simix/popping_private.h"
#include "simix/smx_private.h"
MC_PROCESS_CACHE_FLAG_SIMIX_PROCESSES = 4,
} e_mc_process_cache_flags_t ;
-struct s_mc_smx_process_info {
- void* address;
- struct s_smx_process copy;
-};
-
typedef struct s_mc_smx_process_info s_mc_smx_process_info_t, *mc_smx_process_info_t;
/** Representation of a process
size_t object_infos_size;
int memory_file;
+ /** Copy of `simix_global->process_list`
+ *
+ * See mc_smx.c.
+ */
xbt_dynar_t smx_process_infos;
+
+ /** Copy of `simix_global->process_to_destroy`
+ *
+ * See mc_smx.c.
+ */
xbt_dynar_t smx_old_process_infos;
/** State of the cache (which variables are up to date) */
* */
void MC_process_refresh_malloc_info(mc_process_t process);
-void MC_process_refresh_simix_processes(mc_process_t process);
-
static inline
bool MC_process_is_self(mc_process_t process)
{
void* local, const void* remote, size_t len,
int process_index);
+// Simplified versions/wrappers (whould be moved in mc_address_space):
+const void* MC_process_read_simple(mc_process_t process,
+ void* local, const void* remote, size_t len);
+const void* MC_process_read_dynar_element(mc_process_t process,
+ void* local, const void* remote_dynar, size_t i, size_t len);
+unsigned long MC_process_read_dynar_length(mc_process_t process, const void* remote_dynar);
+
/** Write data to a process memory
*
* @param process the process
dw_frame_t MC_process_find_function(mc_process_t process, const void* ip);
void MC_process_read_variable(mc_process_t process, const char* name, void* target, size_t size);
+char* MC_process_read_string(mc_process_t, void* address);
static inline xbt_mheap_t MC_process_get_heap(mc_process_t process)
{
*/
dw_variable_t MC_process_find_variable_by_name(mc_process_t process, const char* name);
-// ***** Things to move somewhere else:
-
-smx_process_t MC_process_get_issuer(mc_process_t process, smx_simcall_t req);
-
-void MC_simcall_handle(smx_simcall_t req, int value);
-
-void mc_smx_process_info_clear(mc_smx_process_info_t p);
-
-static inline
-xbt_dynar_t mc_smx_process_info_list_new()
-{
- return xbt_dynar_new(
- sizeof(s_mc_smx_process_info_t), (void_f_pvoid_t) &mc_smx_process_info_clear);
-}
-
SG_END_DECL()
#endif