}
smx_action_t SIMIX_req_comm_isend(smx_rdv_t rdv, double task_size, double rate,
- void *src_buff, size_t src_buff_size, void *data)
+ void *src_buff, size_t src_buff_size,
+ int (*match_fun)(void *, void *), void *data)
{
s_smx_req_t req;
req.comm_isend.rate = rate;
req.comm_isend.src_buff = src_buff;
req.comm_isend.src_buff_size = src_buff_size;
+ req.comm_isend.match_fun = match_fun;
req.comm_isend.data = data;
SIMIX_request_push(&req);
return req.comm_isend.result;
}
-smx_action_t SIMIX_req_comm_irecv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size)
+smx_action_t SIMIX_req_comm_irecv(smx_rdv_t rdv, void *dst_buff, size_t * dst_buff_size,
+ int (*match_fun)(void *, void *), void *data)
{
s_smx_req_t req;
req.comm_irecv.rdv = rdv;
req.comm_irecv.dst_buff = dst_buff;
req.comm_irecv.dst_buff_size = dst_buff_size;
+ req.comm_irecv.match_fun = match_fun;
+ req.comm_irecv.data = data;
SIMIX_request_push(&req);
return req.comm_irecv.result;
if (xbt_dynar_length(comms)==0)
return -1;
- WARN0("SIMIX_comm_testany is not implemented yet. Using waitany instead. This changes the semantic...");
- req.call = REQ_COMM_WAITANY;
- req.comm_waitany.comms = comms;
+ req.call = REQ_COMM_TESTANY;
+ req.comm_testany.comms = comms;
SIMIX_request_push(&req);
- return req.comm_waitany.result;
+ return req.comm_testany.result;
}
void SIMIX_req_comm_wait(smx_action_t comm, double timeout)
req.call = REQ_SET_CATEGORY;
req.set_category.action = action;
- req.set_category.category = xbt_strdup (category);
+ req.set_category.category = category;
SIMIX_request_push(&req);
}