X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8c5ac0f14f5a5610c2e8bd61dd085f47ae542159..806504b9602a886e391b54e458b2c1f7f42d3afb:/src/simix/smx_user.c diff --git a/src/simix/smx_user.c b/src/simix/smx_user.c index cb83fd97a4..b42fc6bf5e 100644 --- a/src/simix/smx_user.c +++ b/src/simix/smx_user.c @@ -597,7 +597,8 @@ smx_action_t SIMIX_req_rdv_get_head(smx_rdv_t rdv) } 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; @@ -609,13 +610,15 @@ smx_action_t SIMIX_req_comm_isend(smx_rdv_t rdv, double task_size, double rate, 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; @@ -625,6 +628,8 @@ smx_action_t SIMIX_req_comm_irecv(smx_rdv_t rdv, void *dst_buff, size_t * dst_bu 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; @@ -738,15 +743,26 @@ e_smx_state_t SIMIX_req_comm_get_state(smx_action_t comm) 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)