/********************************* Requests ***********************************/
typedef enum {
+ REQ_NO_REQ, /* Used when there is no ongoing request here */
REQ_HOST_GET_BY_NAME,
REQ_HOST_GET_NAME,
REQ_HOST_GET_PROPERTIES,
REQ_HOST_EXECUTION_GET_REMAINS,
REQ_HOST_EXECUTION_GET_STATE,
REQ_HOST_EXECUTION_SET_PRIORITY,
-#ifdef HAVE_TRACING
- REQ_HOST_EXECUTION_SET_CATEGORY,
-#endif
REQ_HOST_EXECUTION_WAIT,
REQ_PROCESS_CREATE,
REQ_PROCESS_KILL,
REQ_COMM_WAITANY,
REQ_COMM_WAIT,
REQ_COMM_TEST,
+ REQ_COMM_TESTANY,
REQ_COMM_GET_REMAINS,
REQ_COMM_GET_STATE,
- REQ_COMM_GET_DATA,
+ REQ_COMM_GET_SRC_DATA,
+ REQ_COMM_GET_DST_DATA,
REQ_COMM_GET_SRC_BUFF,
REQ_COMM_GET_DST_BUFF,
REQ_COMM_GET_SRC_BUFF_SIZE,
REQ_COMM_GET_DST_PROC,
#ifdef HAVE_LATENCY_BOUND_TRACKING
REQ_COMM_IS_LATENCY_BOUNDED,
+#endif
+#ifdef HAVE_TRACING
+ REQ_SET_CATEGORY,
#endif
REQ_MUTEX_INIT,
REQ_MUTEX_DESTROY,
double priority;
} host_execution_set_priority;
-#ifdef HAVE_TRACING
- struct {
- smx_action_t execution;
- const char *category;
- } host_execution_set_category;
-#endif
-
struct {
smx_action_t execution;
} host_execution_wait;
double rate;
void *src_buff;
size_t src_buff_size;
+ int (*match_fun)(void *, void *);
void *data;
- smx_action_t result;
+ smx_action_t result;
} comm_isend;
struct {
smx_rdv_t rdv;
void *dst_buff;
size_t *dst_buff_size;
+ int (*match_fun)(void *, void *);
+ void *data;
smx_action_t result;
} comm_irecv;
int result;
} comm_test;
+ struct {
+ xbt_dynar_t comms;
+ int result;
+ } comm_testany;
+
struct {
smx_action_t comm;
double result;
struct {
smx_action_t comm;
- void *result;
- } comm_get_data;
+ void *result;
+ } comm_get_src_data;
+
+ struct {
+ smx_action_t comm;
+ void *result;
+ } comm_get_dst_data;
struct {
smx_action_t comm;
} comm_is_latency_bounded;
#endif
+#ifdef HAVE_TRACING
+ struct {
+ smx_action_t action;
+ const char *category;
+ } set_category;
+#endif
+
struct {
smx_mutex_t result;
} mutex_init;
void SIMIX_request_init(void);
void SIMIX_request_destroy(void);
-void SIMIX_request_push(smx_req_t);
+void SIMIX_request_push(void);
smx_req_t SIMIX_request_pop(void);
void SIMIX_request_answer(smx_req_t);
-void SIMIX_request_pre(smx_req_t);
+void SIMIX_request_pre(smx_req_t, int);
void SIMIX_request_post(smx_action_t);
-int SIMIX_request_is_visible(smx_req_t req);
-int SIMIX_request_is_enabled(smx_req_t req);
+XBT_INLINE smx_req_t SIMIX_req_mine(void);
#endif