void replay_trace_reader_free(replay_trace_reader_t *reader);
/* get a new event. Don't free the content, strdup what you want to
keep after next call to reader_get() */
void replay_trace_reader_free(replay_trace_reader_t *reader);
/* get a new event. Don't free the content, strdup what you want to
keep after next call to reader_get() */
/* return a "file:pos" description of the last thing we read. */
const char *replay_trace_reader_position(replay_trace_reader_t r);
Check replay_trace_reader.c for souce code, and replay_MPI.c for
/* return a "file:pos" description of the last thing we read. */
const char *replay_trace_reader_position(replay_trace_reader_t r);
Check replay_trace_reader.c for souce code, and replay_MPI.c for
SimGrid this way is a *real* pain in the ass. You cannot use MSG nor
GRAS nor SMPI nor nothing (because none of these interfaces were coded
with the *extrem* requirement of the state_machine in mind), and you
SimGrid this way is a *real* pain in the ass. You cannot use MSG nor
GRAS nor SMPI nor nothing (because none of these interfaces were coded
with the *extrem* requirement of the state_machine in mind), and you
-can only rely on SIMIX. From SIMIX, you can only use requests (ie, the
-SIMIX_req_* functions). Moreover, you must know that each blocking
-request will result in an interruption of your execution flow.
+can only rely on SIMIX. From SIMIX, you can only use simcalls (ie, the
+simcall_* functions). Moreover, you must know that each blocking
+simcall will result in an interruption of your execution flow.
- smx_action_t act = SIMIX_req_comm_isend(......);
- SIMIX_req_comm_wait(act);
- SIMIX_req_comm_destroy(act);
+ smx_action_t act = simcall_comm_isend(......);
+ simcall_comm_wait(act);
+ simcall_comm_destroy(act);
process, but in state_machine there is only one system stack and the
whole state describing the process is in the structure describing it.
So, when we need to remove one process from the system, to pause it,
process, but in state_machine there is only one system stack and the
whole state describing the process is in the structure describing it.
So, when we need to remove one process from the system, to pause it,
In short, each time simix wants to interrupt a process, state_machine
does a longjmp(2) to the point just before calling the user code. As a
In short, each time simix wants to interrupt a process, state_machine
does a longjmp(2) to the point just before calling the user code. As a
stack is not a safe storing area for your data.
So, you have to write your code as a state machine, with a big ugly
stack is not a safe storing area for your data.
So, you have to write your code as a state machine, with a big ugly