X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/9c0ecca30e78065f9f57599a3eee17e53e8d89ca..aeb67d26a90a4fbc05a2ee596c8f627bb7aa615b:/src/include/simix/simix.h diff --git a/src/include/simix/simix.h b/src/include/simix/simix.h index 33371a830f..ac8da62c87 100644 --- a/src/include/simix/simix.h +++ b/src/include/simix/simix.h @@ -175,21 +175,31 @@ XBT_PUBLIC(void) SIMIX_display_process_status(void); /************************** Comunication Handling *****************************/ /* Public */ -XBT_PUBLIC(smx_rdv_t) SIMIX_rdv_create(char *name); +XBT_PUBLIC(smx_rdv_t) SIMIX_rdv_create(const char *name); XBT_PUBLIC(void) SIMIX_rdv_destroy(smx_rdv_t rvp); -XBT_PUBLIC(void) SIMIX_network_send(smx_rdv_t rdv, double task_size, double rate, double timeout, void *data, size_t data_size); -XBT_PUBLIC(void) SIMIX_network_recv(smx_rdv_t rdv, double timeout, void **data, size_t *data_size); +XBT_PUBLIC(void) SIMIX_network_send(smx_rdv_t rdv, double task_size, double rate, + double timeout, void *data, size_t data_size, + int (filter)(smx_comm_t, void *), void *arg); +XBT_PUBLIC(void) SIMIX_network_recv(smx_rdv_t rdv, double timeout, void *data, + size_t *data_size, int (filter)(smx_comm_t, void *), void *arg); XBT_PUBLIC(void) SIMIX_network_wait(smx_action_t comm); XBT_PUBLIC(int) SIMIX_network_test(smx_action_t comm); +XBT_PUBLIC(int) SIMIX_communication_isSend(smx_comm_t comm); +XBT_PUBLIC(int) SIMIX_communication_isRecv(smx_comm_t comm); + +/* FIXME: Filter function */ +int comm_filter_get(smx_comm_t comm, void *arg); +int comm_filter_put(smx_comm_t comm, void *arg); /* These should be private to SIMIX */ -smx_comm_t SIMIX_communication_new(smx_rdv_t rdv); +smx_comm_t SIMIX_communication_new(smx_comm_type_t type, smx_rdv_t rdv); void SIMIX_communication_destroy(smx_comm_t comm); static inline void SIMIX_communication_use(smx_comm_t comm); static inline void SIMIX_communication_wait_for_completion(smx_comm_t comm, double timeout); -smx_comm_t SIMIX_rdv_get_request_or_create(smx_rdv_t rvp, int look_for_src); +smx_comm_t SIMIX_rdv_get_request(smx_rdv_t rvp, int (filter)(smx_comm_t, void *), void *arg); static inline void SIMIX_rdv_push(smx_rdv_t rvp, smx_comm_t comm); static inline smx_cond_t SIMIX_rdv_get_cond(smx_rdv_t rvp); +void SIMIX_network_copy_data(smx_comm_t comm); SG_END_DECL() #endif /* _SIMIX_SIMIX_H */