Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Convert last call to SIMIX_mutex_unref.
authorArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Sat, 23 Feb 2019 13:31:16 +0000 (14:31 +0100)
committerArnaud Giersch <arnaud.giersch@univ-fcomte.fr>
Mon, 25 Feb 2019 20:33:11 +0000 (21:33 +0100)
include/xbt/synchro.h
src/xbt/xbt_os_synchro.cpp

index 6970239..96d7556 100644 (file)
@@ -27,7 +27,11 @@ SG_BEGIN_DECL()
 /** @brief Thread mutex data type (opaque object)
  *  @hideinitializer
  */
+#ifdef __cplusplus
+typedef simgrid::kernel::activity::MutexImpl* xbt_mutex_t;
+#else
 typedef struct s_smx_mutex_* xbt_mutex_t;
+#endif
 
 /** @brief Creates a new mutex variable */
 XBT_PUBLIC xbt_mutex_t xbt_mutex_init(void);
index b176469..1992ab4 100644 (file)
@@ -9,6 +9,7 @@
 #include "simgrid/Exception.hpp"
 #include "simgrid/simix.h" /* used implementation */
 #include "src/kernel/activity/ConditionVariableImpl.hpp"
+#include "src/kernel/activity/MutexImpl.hpp"
 #include "xbt/synchro.h"
 
 XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync, xbt, "Synchronization mechanism");
@@ -36,7 +37,8 @@ void xbt_mutex_release(xbt_mutex_t mutex)
 
 void xbt_mutex_destroy(xbt_mutex_t mutex)
 {
-  SIMIX_mutex_unref((smx_mutex_t)mutex);
+  if (mutex != nullptr)
+    mutex->unref();
 }
 
 /***** condition related functions *****/