class Process;
class Context;
class ContextFactory;
-
+ class Mutex;
}
}
typedef simgrid::simix::Context *smx_context_t;
typedef simgrid::simix::Process *smx_process_t;
+/**
+ * \ingroup simix_synchro_management
+ */
+typedef simgrid::simix::Mutex *smx_mutex_t;
+
#else
typedef struct s_smx_context *smx_context_t;
typedef struct s_smx_process *smx_process_t;
+typedef struct s_smx_mutex *smx_mutex_t;
#endif
-
-
-SG_BEGIN_DECL()
-
/**************************** Scalar Values **********************************/
typedef union u_smx_scalar u_smx_scalar_t;
/** @} */
/* ******************************** Synchro ************************************ */
-/**
- * \ingroup simix_synchro_management
- */
-typedef struct s_smx_mutex *smx_mutex_t;
+
/**
* \ingroup simix_synchro_management
*/
extern int smx_context_guard_size;
extern int smx_context_guard_size_was_set;
+SG_BEGIN_DECL()
+
XBT_PUBLIC(xbt_dynar_t) SIMIX_process_get_runnable(void);
XBT_PUBLIC(smx_process_t) SIMIX_process_from_PID(int PID);
XBT_PUBLIC(xbt_dynar_t) SIMIX_processes_as_dynar(void);
/************************** Synchro simcalls **********************************/
XBT_PUBLIC(smx_mutex_t) simcall_mutex_init(void);
XBT_PUBLIC(void) SIMIX_mutex_destroy(smx_mutex_t mutex);
+XBT_PUBLIC(smx_mutex_t) SIMIX_mutex_dup(smx_mutex_t mutex);
XBT_PUBLIC(void) simcall_mutex_lock(smx_mutex_t mutex);
XBT_PUBLIC(int) simcall_mutex_trylock(smx_mutex_t mutex);
XBT_PUBLIC(void) simcall_mutex_unlock(smx_mutex_t mutex);