extern smx_global_t simix_global;
extern unsigned long simix_process_maxpid;
+/******************************** Exceptions *********************************/
+
+#define SMX_EXCEPTION(issuer, c, v, m) \
+ if (1) { \
+ smx_process_t _smx_throw_issuer = (issuer); \
+ THROW_PREPARE(_smx_throw_issuer->running_ctx, (c), (v), xbt_strdup(m)); \
+ _smx_throw_issuer->doexception = 1; \
+ } else ((void)0)
+
+#define SMX_THROW() RETHROW
+
+/* ******************************** File ************************************ */
+typedef struct s_smx_file {
+ surf_file_t surf_file;
+} s_smx_file_t;
+
+typedef struct s_smx_stat {
+ s_file_stat_t surf_stat;
+} s_smx_stat_t;
+
/*********************************** Time ************************************/
/** @brief Timer datatype */
SIMIX_COMM_DONE
} e_smx_comm_type_t;
+typedef enum {
+ SIMIX_IO_OPEN,
+ SIMIX_IO_WRITE,
+ SIMIX_IO_READ,
+ SIMIX_IO_STAT
+} e_smx_io_type_t;
+
/** @brief Action datatype */
typedef struct s_smx_action {
e_smx_action_type_t type; /* Type of SIMIX action*/
e_smx_state_t state; /* State of the action */
char *name; /* Action name if any */
- xbt_fifo_t request_list; /* List of requests on this action */
+ xbt_fifo_t simcalls; /* List of simcalls waiting for this action */
/* Data specific to each action type */
union {
}
}
+int process_syscall_color(void *p);
+
void SIMIX_context_mod_init(void);
void SIMIX_context_mod_exit(void);
-XBT_INLINE void SIMIX_context_set_current(smx_context_t context);
-XBT_INLINE smx_context_t SIMIX_context_get_current(void);
+void SIMIX_context_set_current(smx_context_t context);
+smx_context_t SIMIX_context_get_current(void);
/* All factories init */
void SIMIX_ctx_thread_factory_init(smx_context_factory_t *factory);
/**
\brief Executes all the processes to run (in parallel if possible).
*/
-static XBT_INLINE void SIMIX_context_runall()
+static XBT_INLINE void SIMIX_context_runall(void)
{
simix_global->context_factory->runall();
}