Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Add a xbt wrapper for simcall_mutex_trylock (asked in [#17878])
authorAugustin Degomme <augustin.degomme@imag.fr>
Thu, 28 Aug 2014 13:26:15 +0000 (15:26 +0200)
committerAugustin Degomme <augustin.degomme@imag.fr>
Thu, 28 Aug 2014 13:26:15 +0000 (15:26 +0200)
include/xbt/synchro_core.h
src/xbt/xbt_sg_synchro.c

index d427488..2c8e641 100644 (file)
@@ -79,6 +79,15 @@ XBT_PUBLIC(xbt_mutex_t) xbt_mutex_init(void);
 /** @brief Blocks onto the given mutex variable */
 XBT_PUBLIC(void) xbt_mutex_acquire(xbt_mutex_t mutex);
 
+/** @brief Tries to block onto the given mutex variable 
+ * Tries to lock a mutex, return 1 if the mutex is unlocked, else 0.
+ * This function does not block and wait for the mutex to be unlocked.
+ * \param mutex The mutex
+ * \param issuer The process that tries to acquire the mutex
+ * \return 1 - mutex free, 0 - mutex used
+ */
+XBT_PUBLIC(int) xbt_mutex_try_acquire(xbt_mutex_t mutex);
+
 /** @brief Releases the given mutex variable */
 XBT_PUBLIC(void) xbt_mutex_release(xbt_mutex_t mutex);
 
index 724755b..3221ba8 100644 (file)
@@ -140,6 +140,11 @@ void xbt_mutex_acquire(xbt_mutex_t mutex)
   simcall_mutex_lock((smx_mutex_t) mutex);
 }
 
+int xbt_mutex_try_acquire(xbt_mutex_t mutex)
+{
+  return simcall_mutex_trylock((smx_mutex_t) mutex);
+}
+
 void xbt_mutex_release(xbt_mutex_t mutex)
 {
   simcall_mutex_unlock((smx_mutex_t) mutex);