+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_COMM_IRECV;
+ simcall->comm_irecv.rdv = rdv;
+ simcall->comm_irecv.dst_buff = dst_buff;
+ simcall->comm_irecv.dst_buff_size = dst_buff_size;
+ simcall->comm_irecv.match_fun = match_fun;
+ simcall->comm_irecv.data = data;
+ if(MC_is_active()) /* Initialize result to NULL for snapshot comparison done during simcall */
+ simcall->comm_irecv.result = NULL;
+
+ SIMIX_simcall_push(simcall->issuer);
+ return simcall->comm_irecv.result;
+}
+
+
+/**
+ * \ingroup simix_comm_management
+ */
+smx_action_t simcall_comm_iprobe(smx_rdv_t rdv, int src, int tag,
+ int (*match_fun)(void *, void *, smx_action_t), void *data)
+{
+ xbt_assert(rdv, "No rendez-vous point defined for iprobe");