X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6c12a132ca10eefd1d566e489e837e459db4d979..dad398b4437e937d222bafff987814b8f2d80409:/src/mc/mc_smx.h diff --git a/src/mc/mc_smx.h b/src/mc/mc_smx.h index 5cd2e1d5af..7de26cfa74 100644 --- a/src/mc/mc_smx.h +++ b/src/mc/mc_smx.h @@ -4,18 +4,18 @@ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -#ifndef MC_SMX_H -#define MC_SMX_H +#ifndef SIMGRID_MC_SMX_H +#define SIMGRID_MC_SMX_H #include #include #include -#include "smpi/private.h" +#include "src/smpi/private.h" -#include "mc_process.h" -#include "mc_protocol.h" +#include "src/mc/Process.hpp" +#include "src/mc/mc_protocol.h" /** @file * @brief (Cross-process, MCer/MCed) Access to SMX structures @@ -33,7 +33,7 @@ * * The process lists are currently refreshed each time MCed code is executed. * We don't try to give a persistent MCer address for a given MCed process. - * For this reason, a MCer mc_process_t is currently not reusable after + * For this reason, a MCer simgrid::mc::Process* is currently not reusable after * MCed code. */ @@ -45,13 +45,15 @@ struct s_mc_smx_process_info { /** (Flat) Copy of the process data structure */ struct s_smx_process copy; /** Hostname (owned by `mc_modelchecker->hostnames`) */ - char* hostname; + const char* hostname; char* name; }; -xbt_dynar_t MC_smx_process_info_list_new(void); +typedef struct s_mc_smx_process_info s_mc_smx_process_info_t, *mc_smx_process_info_t; -void MC_process_smx_refresh(mc_process_t process); +XBT_PRIVATE xbt_dynar_t MC_smx_process_info_list_new(void); + +XBT_PRIVATE void MC_process_smx_refresh(simgrid::mc::Process* process); /** Get the issuer of a simcall (`req->issuer`) * @@ -62,39 +64,39 @@ void MC_process_smx_refresh(mc_process_t process); * @param process the MCed process * @param req the simcall (copied in the local process) */ -smx_process_t MC_smx_simcall_get_issuer(smx_simcall_t req); +XBT_PRIVATE smx_process_t MC_smx_simcall_get_issuer(smx_simcall_t req); -const char* MC_smx_process_get_name(smx_process_t p); -const char* MC_smx_process_get_host_name(smx_process_t p); +XBT_PRIVATE const char* MC_smx_process_get_name(smx_process_t p); +XBT_PRIVATE const char* MC_smx_process_get_host_name(smx_process_t p); #define MC_EACH_SIMIX_PROCESS(process, code) \ - if (MC_process_is_self(&mc_model_checker->process)) { \ + if (mc_mode == MC_MODE_CLIENT) { \ xbt_swag_foreach(process, simix_global->process_list) { \ code; \ } \ } else { \ - MC_process_smx_refresh(&mc_model_checker->process); \ + MC_process_smx_refresh(&mc_model_checker->process()); \ unsigned int _smx_process_index; \ mc_smx_process_info_t _smx_process_info; \ - xbt_dynar_foreach_ptr(mc_model_checker->process.smx_process_infos, _smx_process_index, _smx_process_info) { \ + xbt_dynar_foreach_ptr(mc_model_checker->process().smx_process_infos, _smx_process_index, _smx_process_info) { \ smx_process_t process = &_smx_process_info->copy; \ code; \ } \ } -/** Execute a given simcall */ -void MC_simcall_handle(smx_simcall_t req, int value); -int MC_smpi_process_count(void); +XBT_PRIVATE int MC_smpi_process_count(void); /* ***** Resolve (local/MCer structure from remote/MCed addresses) ***** */ /** Get a local copy of the process from the process remote address */ -smx_process_t MC_smx_resolve_process(smx_process_t process_remote_address); +XBT_PRIVATE smx_process_t MC_smx_resolve_process(smx_process_t process_remote_address); /** Get the process info structure from the process remote address */ -mc_smx_process_info_t MC_smx_resolve_process_info(smx_process_t process_remote_address); +XBT_PRIVATE mc_smx_process_info_t MC_smx_resolve_process_info(smx_process_t process_remote_address); + +XBT_PRIVATE unsigned long MC_smx_get_maxpid(void); SG_END_DECL()