* in src/simix/simcalls.in *
*********************************************/
-case SIMCALL_HOST_GET_BY_NAME:
+
+#include "smx_private.h"
+#ifdef HAVE_MC
+#include "mc/mc_private.h"
+#endif
+
+XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_smurf);
+
+void SIMIX_simcall_pre(smx_simcall_t simcall, int value)
+{
+ XBT_DEBUG("Handling simcall %p: %s", simcall, SIMIX_simcall_name(simcall->call));
+ SIMCALL_SET_MC_VALUE(simcall, value);
+ if (simcall->issuer->context->iwannadie && simcall->call != SIMCALL_PROCESS_CLEANUP)
+ return;
+ switch (simcall->call) {
+ case SIMCALL_HOST_GET_BY_NAME:
simcall->result.dp = SIMIX_pre_host_get_by_name(simcall , simcall->args[0].cc);
SIMIX_simcall_answer(simcall);
break;
break;
case SIMCALL_COMM_IPROBE:
- simcall->result.dp = SIMIX_pre_comm_iprobe(simcall , (smx_rdv_t) simcall->args[0].dp, simcall->args[1].i, simcall->args[2].i, (simix_match_func_t) simcall->args[3].fp, simcall->args[4].dp);
+ simcall->result.dp = SIMIX_pre_comm_iprobe(simcall , (smx_rdv_t) simcall->args[0].dp, simcall->args[1].i, simcall->args[2].i, simcall->args[3].i, (simix_match_func_t) simcall->args[4].fp, simcall->args[5].dp);
SIMIX_simcall_answer(simcall);
break;
case SIMCALL_COMM_SEND:
- SIMIX_pre_comm_send(simcall , (smx_rdv_t) simcall->args[0].dp, simcall->args[1].d, simcall->args[2].d, simcall->args[3].dp, simcall->args[4].sz, (simix_match_func_t) simcall->args[5].fp, (simix_copy_data_func_t) simcall->args[6].fp, simcall->args[7].dp, simcall->args[8].d);
+ SIMIX_pre_comm_send(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp, simcall->args[2].d, simcall->args[3].d, simcall->args[4].dp, simcall->args[5].sz, (simix_match_func_t) simcall->args[6].fp, (simix_copy_data_func_t) simcall->args[7].fp, simcall->args[8].dp, simcall->args[9].d);
break;
case SIMCALL_COMM_ISEND:
- simcall->result.dp = SIMIX_pre_comm_isend(simcall , (smx_rdv_t) simcall->args[0].dp, simcall->args[1].d, simcall->args[2].d, simcall->args[3].dp, simcall->args[4].sz, (simix_match_func_t) simcall->args[5].fp, (simix_clean_func_t) simcall->args[6].fp, (simix_copy_data_func_t) simcall->args[7].fp, simcall->args[8].dp, simcall->args[9].i);
+ simcall->result.dp = SIMIX_pre_comm_isend(simcall , (smx_process_t) simcall->args[0].dp, (smx_rdv_t) simcall->args[1].dp, simcall->args[2].d, simcall->args[3].d, simcall->args[4].dp, simcall->args[5].sz, (simix_match_func_t) simcall->args[6].fp, (simix_clean_func_t) simcall->args[7].fp, (simix_copy_data_func_t) simcall->args[8].fp, simcall->args[9].dp, simcall->args[10].i);
SIMIX_simcall_answer(simcall);
break;
break;
case SIMCALL_FILE_UNLINK:
- simcall->result.i = SIMIX_pre_file_unlink(simcall , (smx_file_t) simcall->args[0].dp);
+ simcall->result.i = SIMIX_pre_file_unlink(simcall , (smx_file_t) simcall->args[0].dp, (smx_host_t) simcall->args[1].dp);
SIMIX_simcall_answer(simcall);
break;
break;
#endif
+
+ case NUM_SIMCALLS:
+ break;
+ case SIMCALL_NONE:
+ THROWF(arg_error,0,"Asked to do the noop syscall on %s@%s",
+ SIMIX_process_get_name(simcall->issuer),
+ SIMIX_host_get_name(SIMIX_process_get_host(simcall->issuer))
+ );
+ break;
+
+ /* ****************************************************************************************** */
+ /* TUTORIAL: New API */
+ /* ****************************************************************************************** */
+ case SIMCALL_NEW_API_INIT:
+ SIMIX_pre_new_api_fct(simcall);
+ break;
+ }
+}
+
\ No newline at end of file