+
+/* **************************** Public C interface *************************** */
+sg_mutex_t sg_mutex_init()
+{
+ simgrid::kernel::activity::MutexImpl* mutex =
+ simgrid::kernel::actor::simcall([] { return new simgrid::kernel::activity::MutexImpl(); });
+
+ return new simgrid::s4u::Mutex(mutex);
+}
+
+void sg_mutex_lock(sg_mutex_t mutex)
+{
+ mutex->lock();
+}
+
+void sg_mutex_unlock(sg_mutex_t mutex)
+{
+ mutex->unlock();
+}
+
+int sg_mutex_try_lock(sg_mutex_t mutex)
+{
+ return mutex->try_lock();
+}
+
+void sg_mutex_destroy(sg_mutex_t mutex)
+{
+ delete mutex;
+}