X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/faf5ef59d9d0f01181e7f96f47a024a24c43bd85..814f0122ea0074dfb67398a79067c01267bc0b40:/src/mc/mc_process.h diff --git a/src/mc/mc_process.h b/src/mc/mc_process.h index 8159b3e700..4aadece4ff 100644 --- a/src/mc/mc_process.h +++ b/src/mc/mc_process.h @@ -11,12 +11,15 @@ #include #include "simgrid_config.h" - #include #include + +#ifdef HAVE_MC #include "xbt/mmalloc/mmprivate.h" +#endif +#include #include "simix/popping_private.h" #include "simix/smx_private.h" @@ -30,18 +33,17 @@ SG_BEGIN_DECL() int MC_process_vm_open(pid_t pid, int flags); -typedef enum { - MC_PROCESS_NO_FLAG = 0, - MC_PROCESS_SELF_FLAG = 1, -} e_mc_process_flags_t; +typedef int mc_process_flags_t; +#define MC_PROCESS_NO_FLAG 0 +#define MC_PROCESS_SELF_FLAG 1 // Those flags are used to track down which cached information // is still up to date and which information needs to be updated. -typedef enum { - MC_PROCESS_CACHE_FLAG_HEAP = 1, - MC_PROCESS_CACHE_FLAG_MALLOC_INFO = 2, - MC_PROCESS_CACHE_FLAG_SIMIX_PROCESSES = 4, -} e_mc_process_cache_flags_t ; +typedef int mc_process_cache_flags_t; +#define MC_PROCESS_CACHE_FLAG_NONE 0 +#define MC_PROCESS_CACHE_FLAG_HEAP 1 +#define MC_PROCESS_CACHE_FLAG_MALLOC_INFO 2 +#define MC_PROCESS_CACHE_FLAG_SIMIX_PROCESSES 4 typedef struct s_mc_smx_process_info s_mc_smx_process_info_t, *mc_smx_process_info_t; @@ -49,7 +51,7 @@ typedef struct s_mc_smx_process_info s_mc_smx_process_info_t, *mc_smx_process_in */ struct s_mc_process { s_mc_address_space_t address_space; - e_mc_process_flags_t process_flags; + mc_process_flags_t process_flags; pid_t pid; int socket; int status; @@ -75,7 +77,7 @@ struct s_mc_process { xbt_dynar_t smx_old_process_infos; /** State of the cache (which variables are up to date) */ - e_mc_process_cache_flags_t cache_flags; + mc_process_cache_flags_t cache_flags; /** Address of the heap structure in the MCed process. */ void* heap_address; @@ -155,7 +157,7 @@ bool MC_process_is_self(mc_process_t process) * @param len data size */ const void* MC_process_read(mc_process_t process, - e_adress_space_read_flags_t flags, + adress_space_read_flags_t flags, void* local, const void* remote, size_t len, int process_index); @@ -190,8 +192,6 @@ char* MC_process_read_string(mc_process_t, void* address); static inline xbt_mheap_t MC_process_get_heap(mc_process_t process) { - if (MC_process_is_self(process)) - return std_heap; if (!(process->cache_flags & MC_PROCESS_CACHE_FLAG_HEAP)) MC_process_refresh_heap(process); return process->heap; @@ -199,8 +199,6 @@ static inline xbt_mheap_t MC_process_get_heap(mc_process_t process) static inline malloc_info* MC_process_get_malloc_info(mc_process_t process) { - if (MC_process_is_self(process)) - return std_heap->heapinfo; if (!(process->cache_flags & MC_PROCESS_CACHE_FLAG_MALLOC_INFO)) MC_process_refresh_malloc_info(process); return process->heap_info; @@ -210,6 +208,8 @@ static inline malloc_info* MC_process_get_malloc_info(mc_process_t process) */ dw_variable_t MC_process_find_variable_by_name(mc_process_t process, const char* name); +void MC_invalidate_cache(void); + SG_END_DECL() #endif