+ int (*match_fun)(void *, void *, smx_action_t),
+ void (*clean_fun)(void *),
+ void *data,
+ int detached)
+{
+ /* checking for infinite values */
+ xbt_assert(isfinite(task_size), "task_size is not finite!");
+ xbt_assert(isfinite(rate), "rate is not finite!");
+
+ xbt_assert(rdv, "No rendez-vous point defined for isend");
+
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_COMM_ISEND;
+ simcall->comm_isend.rdv = rdv;
+ simcall->comm_isend.task_size = task_size;
+ simcall->comm_isend.rate = rate;
+ simcall->comm_isend.src_buff = src_buff;
+ simcall->comm_isend.src_buff_size = src_buff_size;
+ simcall->comm_isend.match_fun = match_fun;
+ simcall->comm_isend.clean_fun = clean_fun;
+ simcall->comm_isend.data = data;
+ simcall->comm_isend.detached = detached;
+
+ SIMIX_simcall_push(simcall->issuer);
+ return simcall->comm_isend.result;
+}
+
+void simcall_comm_recv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
+ int (*match_fun)(void *, void *, smx_action_t), void *data, double timeout)