-/* $Id$ */
-
/* xbt_synchro -- Synchronization virtualized depending on whether we are */
/* in simulation or real life (act on simulated processes) */
/* This is the real life implementation, using xbt_os_thread to be portable */
/* to windows and linux. */
-/* Copyright 2006,2007 Malek Cherier, Martin Quinson
- * All right reserved. */
+/* Copyright (c) 2007, 2008, 2009, 2010. 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. */
#include "xbt/xbt_os_thread.h" /* The implementation we use */
/* the implementation would be cleaner (and faster) with ELF symbol aliasing */
-XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync_rl, xbt,
- "Synchronization mechanism (RL)");
+XBT_LOG_NEW_DEFAULT_SUBCATEGORY(xbt_sync, xbt,
+ "Synchronization mechanism");
typedef struct s_xbt_thread_ {
xbt_os_thread_t os_thread;
xbt_thread_t xbt_thread_create(const char *name, void_f_pvoid_t code,
- void *param)
+ void *param, int joinable)
{
xbt_thread_t res = xbt_new0(s_xbt_thread_t, 1);
res->userparam = param;
res->code = code;
DEBUG1("Create thread %p", res);
- res->os_thread = xbt_os_thread_create(name, xbt_thread_create_wrapper, res);
+ res->os_thread =
+ xbt_os_thread_create(name, xbt_thread_create_wrapper, res, NULL);
return res;
}
/* KEEP IT IN SYNC WITH OS IMPLEMENTATION (both win and lin) */
#ifdef HAVE_PTHREAD_H
pthread_mutex_t m;
-#elif defined(WIN32)
+#elif defined(_XBT_WIN32)
CRITICAL_SECTION lock;
#endif
};
xbt_os_mutex_destroy((xbt_os_mutex_t) mutex);
}
-#ifdef WIN32
+#ifdef _XBT_WIN32
enum { /* KEEP IT IN SYNC WITH OS IMPLEM */
SIGNAL = 0,
BROADCAST = 1,
/* KEEP IT IN SYNC WITH OS IMPLEMENTATION (both win and lin) */
#ifdef HAVE_PTHREAD_H
pthread_cond_t c;
-#elif defined(WIN32)
+#elif defined(_XBT_WIN32)
HANDLE events[MAX_EVENTS];
unsigned int waiters_count; /* the number of waiters */
void xbt_cond_timedwait(xbt_cond_t cond, xbt_mutex_t mutex, double delay)
{
DEBUG3("Wait cond %p, mutex %p for %f sec", cond, mutex, delay);
- xbt_os_cond_timedwait((xbt_os_cond_t) cond, (xbt_os_mutex_t) mutex, delay);
+ xbt_os_cond_timedwait((xbt_os_cond_t) cond, (xbt_os_mutex_t) mutex,
+ delay);
DEBUG3("Done waiting cond %p, mutex %p for %f sec", cond, mutex, delay);
}