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);
XBT_PUBLIC(void*) SIMIX_host_self_get_data(void);
/********************************* Process ************************************/
+XBT_PUBLIC(smx_process_t) SIMIX_process_ref(smx_process_t process);
+XBT_PUBLIC(void) SIMIX_process_unref(smx_process_t process);
XBT_PUBLIC(int) SIMIX_process_count(void);
XBT_PUBLIC(smx_process_t) SIMIX_process_self(void);
XBT_PUBLIC(const char*) SIMIX_process_self_get_name(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_ref(smx_mutex_t mutex);
+XBT_PUBLIC(void) SIMIX_mutex_unref(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);
XBT_PUBLIC(smx_cond_t) simcall_cond_init(void);
-XBT_PUBLIC(void) SIMIX_cond_destroy(smx_cond_t cond);
+XBT_PUBLIC(void) SIMIX_cond_unref(smx_cond_t cond);
+XBT_PUBLIC(smx_cond_t) SIMIX_cond_ref(smx_cond_t cond);
XBT_PUBLIC(void) simcall_cond_signal(smx_cond_t cond);
XBT_PUBLIC(void) simcall_cond_wait(smx_cond_t cond, smx_mutex_t mutex);
XBT_PUBLIC(void) simcall_cond_wait_timeout(smx_cond_t cond,