#include "xbt/ex.h"
#include "xbt/dynar.h"
#include "xbt/swag.h"
-#include <semaphore.h>
+
+#include <pthread.h>
#include <stdint.h>
#ifdef HAVE_LIMITS_H
* */
struct mdesc {
- /** @brief Semaphore locking the access to the heap */
- sem_t sem;
+ /** @brief Mutex locking the access to the heap */
+ pthread_mutex_t mutex;
/** @brief Number of processes that attached the heap */
unsigned int refcount;
XBT_PUBLIC( void *)mmorecore(struct mdesc *mdp, ssize_t size);
-/* Thread-safety (if the sem is already created)
+/** Thread-safety (if the mutex is already created)
*
* This is mandatory in the case where the user runs a parallel simulation
* in a model-checking enabled tree. Without this protection, our malloc
* implementation will not like multi-threading AT ALL.
*/
-#define LOCK(mdp) sem_wait(&mdp->sem)
-#define UNLOCK(mdp) sem_post(&mdp->sem)
+#define LOCK(mdp) pthread_mutex_lock(&mdp->mutex)
+#define UNLOCK(mdp) pthread_mutex_unlock(&mdp->mutex)
static XBT_INLINE void mmalloc_paranoia(struct mdesc *mdp){
void mmcheck(xbt_mheap_t heap);
+int mmalloc_exec_using_mm(int argc, const char** argv);
+void mmalloc_ensure_using_mm(int argc, const char** argv);
+
#endif /* __MMPRIVATE_H */