-typedef struct mc_state{
- xbt_setset_set_t transitions;
- xbt_setset_set_t enabled_transitions;
- xbt_setset_set_t interleave;
- xbt_setset_set_t done;
- mc_transition_t executed_transition;
+/* Possible exploration status of a process in a state */
+typedef enum {
+ MC_NOT_INTERLEAVE = 0, /* Do not interleave (do not execute) */
+ MC_INTERLEAVE, /* Interleave the process (one or more request) */
+ MC_DONE /* Already interleaved */
+} e_mc_process_state_t;
+
+/* On every state, each process has an entry of the following type */
+typedef struct mc_procstate{
+ e_mc_process_state_t state; /* Exploration control information */
+ unsigned int num_to_interleave; /* Number of request to interleave */
+ /* If a process has a request with multiple possible responses like a */
+ /* "WaitAny", then the following vector with the indexes to interleave */
+ /* is additionally used. */
+ unsigned int *requests_indexes; /* Indexes of the requests to interleave */
+} s_mc_procstate_t, *mc_procstate_t;
+
+/* An exploration state is composed of: */
+typedef struct mc_state {
+ unsigned long max_pid; /* Maximum pid at state's creation time */
+ mc_procstate_t proc_status; /* State's exploration status by process */
+ s_smx_req_t executed; /* The executed request of the state */