XBT_PUBLIC(smx_rdv_t) simcall_rdv_get_by_name(const char *name);
XBT_PUBLIC(int) simcall_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host);
XBT_PUBLIC(smx_action_t) simcall_rdv_get_head(smx_rdv_t rdv);
-XBT_PUBLIC(smx_process_t) SIMIX_rdv_get_receiver(smx_rdv_t rdv);
-XBT_PUBLIC(void) SIMIX_rdv_set_receiver(smx_rdv_t rdv , smx_process_t process);
+XBT_PUBLIC(smx_process_t) simcall_rdv_get_receiver(smx_rdv_t rdv);
+XBT_PUBLIC(void) simcall_rdv_set_receiver(smx_rdv_t rdv , smx_process_t process);
XBT_PUBLIC(xbt_dict_t) SIMIX_get_rdv_points(void);
void SIMIX_rdv_remove(smx_rdv_t rdv, smx_action_t comm);
int SIMIX_rdv_comm_count_by_host(smx_rdv_t rdv, smx_host_t host);
smx_action_t SIMIX_rdv_get_head(smx_rdv_t rdv);
+void SIMIX_rdv_set_receiver(smx_rdv_t rdv, smx_process_t proc);
+smx_process_t SIMIX_rdv_get_receiver(smx_rdv_t rdv);
void SIMIX_comm_start(smx_action_t action);
void SIMIX_comm_send(smx_process_t src_proc, smx_rdv_t rdv,
double task_size, double rate,
SIMIX_simcall_answer(simcall);
break;
+ case SIMCALL_RDV_SET_RECV:
+ SIMIX_rdv_set_receiver(simcall->rdv_set_rcv_proc.rdv, simcall->rdv_set_rcv_proc.receiver);
+ SIMIX_simcall_answer(simcall);
+ break;
+
+ case SIMCALL_RDV_GET_RECV:
+ simcall->rdv_get_rcv_proc.result = SIMIX_rdv_get_receiver(simcall->rdv_set_rcv_proc.rdv);
+ SIMIX_simcall_answer(simcall);
+ break;
+
case SIMCALL_HOST_GET_BY_NAME:
simcall->host_get_by_name.result =
SIMIX_host_get_by_name(simcall->host_get_by_name.name);
SIMCALL_ENUM_ELEMENT(SIMCALL_RDV_GEY_BY_NAME),\
SIMCALL_ENUM_ELEMENT(SIMCALL_RDV_COMM_COUNT_BY_HOST),\
SIMCALL_ENUM_ELEMENT(SIMCALL_RDV_GET_HEAD),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_RDV_SET_RECV),\
+SIMCALL_ENUM_ELEMENT(SIMCALL_RDV_GET_RECV),\
SIMCALL_ENUM_ELEMENT(SIMCALL_COMM_SEND),\
SIMCALL_ENUM_ELEMENT(SIMCALL_COMM_ISEND),\
SIMCALL_ENUM_ELEMENT(SIMCALL_COMM_RECV),\
smx_action_t result;
} rdv_get_head;
+ struct {
+ smx_rdv_t rdv;
+ smx_process_t receiver;
+ } rdv_set_rcv_proc;
+
+ struct {
+ smx_rdv_t rdv;
+ smx_process_t result;
+ } rdv_get_rcv_proc;
+
struct {
smx_rdv_t rdv;
double task_size;
SIMIX_simcall_push(simcall->issuer);
return simcall->rdv_get_head.result;
}
+
+void simcall_rdv_set_receiver(smx_rdv_t rdv , smx_process_t process)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_RDV_SET_RECV;
+ simcall->rdv_set_rcv_proc.rdv = rdv;
+ simcall->rdv_set_rcv_proc.receiver = process;
+
+ SIMIX_simcall_push(simcall->issuer);
+}
+
+smx_process_t simcall_rdv_get_receiver(smx_rdv_t rdv)
+{
+ smx_simcall_t simcall = SIMIX_simcall_mine();
+
+ simcall->call = SIMCALL_RDV_GET_RECV;
+ simcall->rdv_get_rcv_proc.rdv = rdv;
+
+ SIMIX_simcall_push(simcall->issuer);
+ return simcall->rdv_get_rcv_proc.result;
+}
+
/**
* \ingroup simix_comm_management
*/