am__objects_2 = gras.lo transport.lo msg.lo rpc.lo timer.lo process.lo \
gras_module.lo ddt_create.lo ddt_convert.lo ddt_exchange.lo \
cbps.lo datadesc.lo ddt_parse.lo ddt_parse.yy.lo
-am__objects_3 = rl_stubs.lo xbt_os_thread.lo rl_transport.lo \
+am__objects_3 = xbt_rl_synchro.lo
+am__objects_4 = rl_stubs.lo xbt_os_thread.lo rl_transport.lo \
transport_plugin_file.lo transport_plugin_tcp.lo rl_emul.lo \
- rl_process.lo rl_time.lo rl_dns.lo rl_msg.lo
-am__objects_4 = amok_base.lo bandwidth.lo saturate.lo \
+ rl_process.lo rl_time.lo rl_dns.lo rl_msg.lo $(am__objects_3)
+am__objects_5 = amok_base.lo bandwidth.lo saturate.lo \
peermanagement.lo
am_libgras_la_OBJECTS = $(am__objects_1) $(am__objects_2) \
- $(am__objects_3) $(am__objects_4)
+ $(am__objects_4) $(am__objects_5)
libgras_la_OBJECTS = $(am_libgras_la_OBJECTS)
libgras_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
gras/Transport/sg_transport.c \
gras/Transport/transport_plugin_sg.c gras/Virtu/sg_emul.c \
gras/Virtu/sg_process.c gras/Virtu/sg_time.c \
- gras/Virtu/sg_dns.c gras/Msg/sg_msg.c amok/amok_base.c \
- amok/Bandwidth/bandwidth.c amok/Bandwidth/saturate.c \
- amok/PeerManagement/peermanagement.c
-am__objects_5 = maxmin.lo lagrange.lo trace_mgr.lo surf.lo \
+ gras/Virtu/sg_dns.c gras/Msg/sg_msg.c xbt/xbt_sg_synchro.c \
+ amok/amok_base.c amok/Bandwidth/bandwidth.c \
+ amok/Bandwidth/saturate.c amok/PeerManagement/peermanagement.c
+am__objects_6 = maxmin.lo lagrange.lo trace_mgr.lo surf.lo \
surfxml_parse.lo cpu.lo network.lo workstation.lo \
surf_timer.lo network_dassf.lo workstation_KCCFLN05.lo
-am__objects_6 = gtnets_simulator.lo gtnets_topology.lo \
+am__objects_7 = gtnets_simulator.lo gtnets_topology.lo \
gtnets_interface.lo network_gtnets.lo
-@USE_GTNETS_TRUE@am__objects_7 = $(am__objects_6)
-@HAVE_SDP_TRUE@am__objects_8 = sdp.lo
-am__objects_9 = smx_global.lo smx_deployment.lo smx_config.lo \
+@USE_GTNETS_TRUE@am__objects_8 = $(am__objects_7)
+@HAVE_SDP_TRUE@am__objects_9 = sdp.lo
+am__objects_10 = smx_global.lo smx_deployment.lo smx_config.lo \
smx_environment.lo smx_host.lo smx_process.lo smx_action.lo \
smx_synchro.lo
-am__objects_10 = context.lo
-am__objects_11 = msg_config.lo task.lo host.lo m_process.lo gos.lo \
+am__objects_11 = context.lo
+am__objects_12 = msg_config.lo task.lo host.lo m_process.lo gos.lo \
global.lo environment.lo deployment.lo
-am__objects_12 = sd_global.lo sd_link.lo sd_task.lo sd_workstation.lo
-am__objects_13 = sg_transport.lo transport_plugin_sg.lo sg_emul.lo \
- sg_process.lo sg_time.lo sg_dns.lo sg_msg.lo
-am_libsimgrid_la_OBJECTS = $(am__objects_1) $(am__objects_5) \
- $(am__objects_7) $(am__objects_8) $(am__objects_9) \
- $(am__objects_10) $(am__objects_11) $(am__objects_12) \
- $(am__objects_2) $(am__objects_13) $(am__objects_4)
+am__objects_13 = sd_global.lo sd_link.lo sd_task.lo sd_workstation.lo
+am__objects_14 = xbt_sg_synchro.lo
+am__objects_15 = sg_transport.lo transport_plugin_sg.lo sg_emul.lo \
+ sg_process.lo sg_time.lo sg_dns.lo sg_msg.lo $(am__objects_14)
+am_libsimgrid_la_OBJECTS = $(am__objects_1) $(am__objects_6) \
+ $(am__objects_8) $(am__objects_9) $(am__objects_10) \
+ $(am__objects_11) $(am__objects_12) $(am__objects_13) \
+ $(am__objects_2) $(am__objects_15) $(am__objects_5)
libsimgrid_la_OBJECTS = $(am_libsimgrid_la_OBJECTS)
libsimgrid_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
gras/Transport/sg_transport.c \
gras/Transport/transport_plugin_sg.c gras/Virtu/sg_emul.c \
gras/Virtu/sg_process.c gras/Virtu/sg_time.c \
- gras/Virtu/sg_dns.c gras/Msg/sg_msg.c amok/amok_base.c \
- amok/Bandwidth/bandwidth.c amok/Bandwidth/saturate.c \
- amok/PeerManagement/peermanagement.c
-am__objects_14 = jxbt_context.lo xbt_os_thread.lo
-am__objects_15 = jxbt_utilities.lo jmsg.lo jmsg_channel.lo \
+ gras/Virtu/sg_dns.c gras/Msg/sg_msg.c xbt/xbt_sg_synchro.c \
+ amok/amok_base.c amok/Bandwidth/bandwidth.c \
+ amok/Bandwidth/saturate.c amok/PeerManagement/peermanagement.c
+am__objects_16 = jxbt_context.lo xbt_os_thread.lo
+am__objects_17 = jxbt_utilities.lo jmsg.lo jmsg_channel.lo \
jmsg_host.lo jmsg_parallel_task.lo jmsg_process.lo \
jmsg_task.lo
@HAVE_JAVA_TRUE@am_libsimgrid4java_la_OBJECTS = $(am__objects_1) \
-@HAVE_JAVA_TRUE@ $(am__objects_5) $(am__objects_7) \
-@HAVE_JAVA_TRUE@ $(am__objects_8) $(am__objects_9) \
-@HAVE_JAVA_TRUE@ $(am__objects_14) $(am__objects_15) \
-@HAVE_JAVA_TRUE@ $(am__objects_11) $(am__objects_2) \
-@HAVE_JAVA_TRUE@ $(am__objects_13) $(am__objects_4)
+@HAVE_JAVA_TRUE@ $(am__objects_6) $(am__objects_8) \
+@HAVE_JAVA_TRUE@ $(am__objects_9) $(am__objects_10) \
+@HAVE_JAVA_TRUE@ $(am__objects_16) $(am__objects_17) \
+@HAVE_JAVA_TRUE@ $(am__objects_12) $(am__objects_2) \
+@HAVE_JAVA_TRUE@ $(am__objects_15) $(am__objects_5)
libsimgrid4java_la_OBJECTS = $(am_libsimgrid4java_la_OBJECTS)
libsimgrid4java_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
am__testall_SOURCES_DIST = ./cunit_unit.c ./ex_unit.c ./dynar_unit.c \
./dict_unit.c ./set_unit.c ./swag_unit.c ./xbt_str_unit.c \
./config_unit.c simgrid_units_main.c
-@GRAMINE_MODE_FALSE@am__objects_16 = cunit_unit.$(OBJEXT) \
+@GRAMINE_MODE_FALSE@am__objects_18 = cunit_unit.$(OBJEXT) \
@GRAMINE_MODE_FALSE@ ex_unit.$(OBJEXT) dynar_unit.$(OBJEXT) \
@GRAMINE_MODE_FALSE@ dict_unit.$(OBJEXT) set_unit.$(OBJEXT) \
@GRAMINE_MODE_FALSE@ swag_unit.$(OBJEXT) xbt_str_unit.$(OBJEXT) \
@GRAMINE_MODE_FALSE@ config_unit.$(OBJEXT)
-@GRAMINE_MODE_FALSE@am_testall_OBJECTS = $(am__objects_16) \
+@GRAMINE_MODE_FALSE@am_testall_OBJECTS = $(am__objects_18) \
@GRAMINE_MODE_FALSE@ simgrid_units_main.$(OBJEXT)
testall_OBJECTS = $(am_testall_OBJECTS)
@GRAMINE_MODE_FALSE@testall_DEPENDENCIES = libgras.la
xbt/cunit.c \
xbt/graphxml_parse.c
+XBT_RL_SRC = \
+ xbt/xbt_rl_synchro.c
+
+XBT_SG_SRC = \
+ xbt/xbt_sg_synchro.c
+
SURF_SRC = \
surf/maxmin.c \
surf/lagrange.c \
gras/DataDesc/datadesc_interface.h gras/DataDesc/datadesc_private.h \
gras/DataDesc/ddt_parse.c gras/DataDesc/ddt_parse.yy.c gras/DataDesc/ddt_parse.yy.h
-GRAS_RL_SRC = \
- gras/rl_stubs.c xbt/xbt_os_thread.c \
- \
- gras/Transport/rl_transport.c \
- gras/Transport/transport_plugin_file.c gras/Transport/transport_plugin_tcp.c \
- \
- gras/Virtu/rl_emul.c \
- gras/Virtu/rl_process.c gras/Virtu/rl_time.c \
- gras/Virtu/rl_dns.c\
- \
- gras/Msg/rl_msg.c
-
-GRAS_SG_SRC = gras/Transport/sg_transport.c gras/Transport/transport_plugin_sg.c \
- \
- gras/Virtu/sg_emul.c \
- gras/Virtu/sg_process.c gras/Virtu/sg_time.c \
- gras/Virtu/sg_dns.c\
- \
- gras/Msg/sg_msg.c
-
+GRAS_RL_SRC = gras/rl_stubs.c xbt/xbt_os_thread.c \
+ gras/Transport/rl_transport.c \
+ gras/Transport/transport_plugin_file.c \
+ gras/Transport/transport_plugin_tcp.c gras/Virtu/rl_emul.c \
+ gras/Virtu/rl_process.c gras/Virtu/rl_time.c \
+ gras/Virtu/rl_dns.c gras/Msg/rl_msg.c $(XBT_RL_SRC)
+GRAS_SG_SRC = gras/Transport/sg_transport.c \
+ gras/Transport/transport_plugin_sg.c gras/Virtu/sg_emul.c \
+ gras/Virtu/sg_process.c gras/Virtu/sg_time.c \
+ gras/Virtu/sg_dns.c gras/Msg/sg_msg.c $(XBT_SG_SRC)
AMOK_SRC = \
amok/amok_base.c \
amok/Bandwidth/bandwidth.c amok/Bandwidth/saturate.c \
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_matrix.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_os_thread.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_peer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_rl_synchro.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_sg_synchro.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_str.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_str_unit.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xbt_virtu.Plo@am__quote@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o rl_msg.lo `test -f 'gras/Msg/rl_msg.c' || echo '$(srcdir)/'`gras/Msg/rl_msg.c
+xbt_rl_synchro.lo: xbt/xbt_rl_synchro.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xbt_rl_synchro.lo -MD -MP -MF $(DEPDIR)/xbt_rl_synchro.Tpo -c -o xbt_rl_synchro.lo `test -f 'xbt/xbt_rl_synchro.c' || echo '$(srcdir)/'`xbt/xbt_rl_synchro.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xbt_rl_synchro.Tpo $(DEPDIR)/xbt_rl_synchro.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xbt/xbt_rl_synchro.c' object='xbt_rl_synchro.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xbt_rl_synchro.lo `test -f 'xbt/xbt_rl_synchro.c' || echo '$(srcdir)/'`xbt/xbt_rl_synchro.c
+
amok_base.lo: amok/amok_base.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT amok_base.lo -MD -MP -MF $(DEPDIR)/amok_base.Tpo -c -o amok_base.lo `test -f 'amok/amok_base.c' || echo '$(srcdir)/'`amok/amok_base.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/amok_base.Tpo $(DEPDIR)/amok_base.Plo
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o sg_msg.lo `test -f 'gras/Msg/sg_msg.c' || echo '$(srcdir)/'`gras/Msg/sg_msg.c
+xbt_sg_synchro.lo: xbt/xbt_sg_synchro.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT xbt_sg_synchro.lo -MD -MP -MF $(DEPDIR)/xbt_sg_synchro.Tpo -c -o xbt_sg_synchro.lo `test -f 'xbt/xbt_sg_synchro.c' || echo '$(srcdir)/'`xbt/xbt_sg_synchro.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/xbt_sg_synchro.Tpo $(DEPDIR)/xbt_sg_synchro.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='xbt/xbt_sg_synchro.c' object='xbt_sg_synchro.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o xbt_sg_synchro.lo `test -f 'xbt/xbt_sg_synchro.c' || echo '$(srcdir)/'`xbt/xbt_sg_synchro.c
+
jxbt_context.lo: java/jxbt_context.c
@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT jxbt_context.lo -MD -MP -MF $(DEPDIR)/jxbt_context.Tpo -c -o jxbt_context.lo `test -f 'java/jxbt_context.c' || echo '$(srcdir)/'`java/jxbt_context.c
@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/jxbt_context.Tpo $(DEPDIR)/jxbt_context.Plo
--- /dev/null
+/* $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. */
+
+/* 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/sysdep.h"
+#include "xbt/ex.h"
+#include "portable.h"
+
+#include "xbt/synchro.h" /* This module */
+#include "xbt/xbt_os_thread.h" /* The implementation we use */
+
+/* the implementation would be cleaner (and faster) with ELF symbol aliasing */
+
+
+struct xbt_thread_ {
+ /* KEEP IT IN SYNC WITH xbt_os_thread (both win and lin parts) */
+#ifdef HAVE_PTHREAD_H
+ pthread_t t;
+ void *param;
+ pvoid_f_pvoid_t *start_routine;
+#elif defined(WIN32)
+ HANDLE handle; /* the win thread handle */
+ unsigned long id; /* the win thread id */
+ pvoid_f_pvoid_t *start_routine;
+ void* param;
+#endif
+};
+
+xbt_thread_t xbt_thread_create(pvoid_f_pvoid_t start_routine,
+ void* param) {
+ return (xbt_thread_t)xbt_os_thread_create(start_routine,param);
+}
+
+void
+xbt_thread_join(xbt_thread_t thread,void ** thread_return) {
+ xbt_os_thread_join( (xbt_os_thread_t)thread, thread_return );
+}
+
+void xbt_thread_exit(int *retval) {
+ xbt_os_thread_exit( retval );
+}
+
+xbt_thread_t xbt_thread_self(void) {
+ return (xbt_thread_t)xbt_os_thread_self();
+}
+
+void xbt_thread_yield(void) {
+ xbt_os_thread_yield();
+}
+/****** mutex related functions ******/
+struct xbt_mutex_ {
+ /* KEEP IT IN SYNC WITH OS IMPLEMENTATION (both win and lin) */
+#ifdef HAVE_PTHREAD_H
+ pthread_mutex_t m;
+#elif defined(WIN32)
+ CRITICAL_SECTION lock;
+#endif
+};
+
+xbt_mutex_t xbt_mutex_init(void) {
+ return (xbt_mutex_t)xbt_os_mutex_init();
+}
+
+void xbt_mutex_lock(xbt_mutex_t mutex) {
+ xbt_os_mutex_lock( (xbt_os_mutex_t)mutex );
+}
+
+void xbt_mutex_unlock(xbt_mutex_t mutex) {
+ xbt_os_mutex_unlock( (xbt_os_mutex_t)mutex );
+}
+
+void xbt_mutex_destroy(xbt_mutex_t mutex) {
+ xbt_os_mutex_destroy( (xbt_os_mutex_t)mutex );
+}
+
+/***** condition related functions *****/
+typedef struct xbt_cond_ {
+ /* KEEP IT IN SYNC WITH OS IMPLEMENTATION (both win and lin) */
+#ifdef HAVE_PTHREAD_H
+ pthread_cond_t c;
+#elif defined(WIN32)
+ HANDLE events[MAX_EVENTS];
+
+ unsigned int waiters_count; /* the number of waiters */
+ CRITICAL_SECTION waiters_count_lock; /* protect access to waiters_count */
+#endif
+} s_xbt_cond_t;
+
+xbt_cond_t xbt_cond_init(void) {
+ return (xbt_cond_t) xbt_os_cond_init();
+}
+
+void xbt_cond_wait(xbt_cond_t cond, xbt_mutex_t mutex) {
+ xbt_os_cond_wait( (xbt_os_cond_t)cond, (xbt_os_mutex_t)mutex );
+}
+
+void xbt_cond_signal(xbt_cond_t cond) {
+ xbt_os_cond_signal( (xbt_os_cond_t)cond );
+}
+
+void xbt_cond_broadcast(xbt_cond_t cond){
+ xbt_os_cond_broadcast( (xbt_os_cond_t)cond );
+}
+void xbt_cond_destroy(xbt_cond_t cond){
+ xbt_os_cond_destroy( (xbt_os_cond_t)cond );
+}
--- /dev/null
+/* $Id$ */
+
+/* xbt_synchro -- Synchronization virtualized depending on whether we are */
+/* in simulation or real life (act on simulated processes) */
+
+/* This is the simulation implementation, using simix. */
+
+/* Copyright 2006,2007 Malek Cherier, Martin Quinson
+ * All right 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/ex.h"
+
+#include "xbt/synchro.h" /* This module */
+
+#include "simix/simix.h" /* used implementation */
+#include "simix/datatypes.h"
+
+/* the implementation would be cleaner (and faster) with ELF symbol aliasing */
+
+typedef struct s_xbt_thread_ {
+ /* KEEP IT IN SYNC WITH s_smx_process_ from src/include/simix/datatypes.h */
+ char *name; /**< @brief process name if any */
+ smx_simdata_process_t simdata; /**< @brief simulator data */
+ s_xbt_swag_hookup_t process_hookup;
+ s_xbt_swag_hookup_t synchro_hookup;
+ s_xbt_swag_hookup_t host_proc_hookup;
+ void *data; /**< @brief user data */
+ /* KEEP IT IN SYNC WITH s_smx_process_ from src/include/simix/datatypes.h */
+} s_xbt_thread_t;
+
+xbt_thread_t xbt_thread_create(pvoid_f_pvoid_t start_routine, void* param) {
+ THROW_UNIMPLEMENTED; /* FIXME */
+}
+
+void
+xbt_thread_join(xbt_thread_t thread,void ** thread_return) {
+ THROW_UNIMPLEMENTED; /* FIXME */
+}
+
+void xbt_thread_exit(int *retval) {
+ THROW_UNIMPLEMENTED; /* FIXME */
+}
+
+xbt_thread_t xbt_thread_self(void) {
+ THROW_UNIMPLEMENTED; /* FIXME */
+}
+
+void xbt_thread_yield(void) {
+ THROW_UNIMPLEMENTED; /* FIXME */
+}
+/****** mutex related functions ******/
+struct s_xbt_mutex_ {
+
+ /* KEEP IT IN SYNC WITH src/simix/private.h::struct s_smx_mutex */
+ xbt_swag_t sleeping; /* list of sleeping process */
+ int using;
+ /* KEEP IT IN SYNC WITH src/simix/private.h::struct s_smx_mutex */
+
+};
+
+xbt_mutex_t xbt_mutex_init(void) {
+ return (xbt_mutex_t)SIMIX_mutex_init();
+}
+
+void xbt_mutex_lock(xbt_mutex_t mutex) {
+ SIMIX_mutex_lock( (smx_mutex_t)mutex) ;
+}
+
+void xbt_mutex_unlock(xbt_mutex_t mutex) {
+ SIMIX_mutex_unlock( (smx_mutex_t)mutex );
+}
+
+void xbt_mutex_destroy(xbt_mutex_t mutex) {
+ SIMIX_mutex_destroy( (smx_mutex_t)mutex );
+}
+
+/***** condition related functions *****/
+struct s_xbt_cond_ {
+
+ /* KEEP IT IN SYNC WITH src/simix/private.h::struct s_smx_cond */
+ xbt_swag_t sleeping; /* list of sleeping process */
+ smx_mutex_t mutex;
+ xbt_fifo_t actions; /* list of actions */
+ /* KEEP IT IN SYNC WITH src/simix/private.h::struct s_smx_cond */
+
+};
+
+xbt_cond_t xbt_cond_init(void) {
+ return (xbt_cond_t)SIMIX_cond_init();
+}
+
+void xbt_cond_wait(xbt_cond_t cond, xbt_mutex_t mutex) {
+ SIMIX_cond_wait( (smx_cond_t)cond , (smx_mutex_t)mutex );
+}
+
+void xbt_cond_signal(xbt_cond_t cond) {
+ SIMIX_cond_signal( (smx_cond_t)cond );
+}
+
+void xbt_cond_broadcast(xbt_cond_t cond){
+ SIMIX_cond_broadcast( (smx_cond_t)cond );
+}
+void xbt_cond_destroy(xbt_cond_t cond){
+ SIMIX_cond_destroy( (smx_cond_t)cond );
+}