}
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;
return req.comm_get_state.result;
}
-void *SIMIX_req_comm_get_data(smx_action_t comm)
+void *SIMIX_req_comm_get_src_data(smx_action_t comm)
{
s_smx_req_t req;
- req.call = REQ_COMM_GET_DATA;
- req.comm_get_data.comm = comm;
+ req.call = REQ_COMM_GET_SRC_DATA;
+ req.comm_get_src_data.comm = comm;
SIMIX_request_push(&req);
- return req.comm_get_data.result;
+ return req.comm_get_src_data.result;
+}
+
+void *SIMIX_req_comm_get_dst_data(smx_action_t comm)
+{
+ s_smx_req_t req;
+
+ req.call = REQ_COMM_GET_DST_DATA;
+ req.comm_get_dst_data.comm = comm;
+
+ SIMIX_request_push(&req);
+ return req.comm_get_dst_data.result;
}
void *SIMIX_req_comm_get_src_buff(smx_action_t comm)