X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/dc3c3416c4cca30fef7c29422d45094687f59893..0917b3d40163b247c05fe33f60eb71c00a7c6854:/include/xbt/synchro_core.h diff --git a/include/xbt/synchro_core.h b/include/xbt/synchro_core.h index 8eae7732e4..2c8e641a1b 100644 --- a/include/xbt/synchro_core.h +++ b/include/xbt/synchro_core.h @@ -1,13 +1,13 @@ /* xbt/synchro_core.h -- Synchronization tools */ /* Usable in simulator, (or in real life when mixing with GRAS) */ -/* Copyright (c) 2009, 2010. The SimGrid Team. +/* Copyright (c) 2009-2014. The SimGrid Team. * All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ -/* splited away from synchro.h since we areused by dynar.h, and synchro.h uses dynar */ +/* splited away from synchro.h since we are used by dynar.h, and synchro.h uses dynar */ #ifndef _XBT_THREAD_H @@ -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); @@ -106,6 +115,13 @@ XBT_PUBLIC(void) xbt_cond_broadcast(xbt_cond_t cond); /** @brief Destroys the given mutex variable */ XBT_PUBLIC(void) xbt_cond_destroy(xbt_cond_t cond); + +#define XBT_BARRIER_SERIAL_PROCESS -1 +typedef struct s_xbt_bar_ *xbt_bar_t; +XBT_PUBLIC(xbt_bar_t) xbt_barrier_init( unsigned int count); +XBT_PUBLIC(void) xbt_barrier_destroy(xbt_bar_t bar); +XBT_PUBLIC(int) xbt_barrier_wait(xbt_bar_t bar); + /** @} */ SG_END_DECL()