X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/addf942a7913b477a273e7a372967b200d95d12c..dfe761f4bc8d35a74c3da5fabe99630c0788001f:/src/xbt/context_private.h diff --git a/src/xbt/context_private.h b/src/xbt/context_private.h index 820dc66a05..75d378a0d6 100644 --- a/src/xbt/context_private.h +++ b/src/xbt/context_private.h @@ -14,42 +14,51 @@ #include "xbt/dynar.h" /* void_f_pvoid_t */ #include "portable.h" /* loads context system definitions */ -#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32) && !defined(__TOS_WIN__) -#include "ucontext_stack.h" /* loads context system definitions */ -#endif - #include "xbt/context.h" #include "xbt/ex.h" #ifdef CONTEXT_THREADS -# include "xbt/xbt_thread.h" +# include "xbt/xbt_os_thread.h" #else +# include "ucontext_stack.h" /* loads context system definitions */ # include # define STACK_SIZE 128*1024 /* Lower this if you want to reduce the memory consumption */ #endif /* not CONTEXT_THREADS */ -typedef struct s_xbt_context -{ +typedef struct s_xbt_context { s_xbt_swag_hookup_t hookup; -#ifdef CONTEXT_THREADS - xbt_thcond_t cond; - xbt_mutex_t mutex; - xbt_thread_t thread; /* the thread that execute the code */ -#else - ucontext_t uc; /* the thread that execute the code */ + char *name; + + /* Declaration of the thread running the process */ +#ifdef JAVA_SIMGRID /* come first because other ones are defined too */ + jobject jprocess; /* the java process instance */ + JNIEnv* jenv; /* jni interface pointer for this thread */ + ex_ctx_t *exception; /* exception container -- only in ucontext&java, os_threads deals with it for us otherwise */ +#else +# ifdef CONTEXT_THREADS + xbt_os_thread_t thread; /* a plain dumb thread (portable to posix or windows) */ + xbt_os_sem_t begin; /* this semaphore is used to schedule/unschedule the process */ + xbt_os_sem_t end; /* this semaphore is used to schedule/unschedule the process */ +# else + ucontext_t uc; /* the thread that execute the code */ char stack[STACK_SIZE]; struct s_xbt_context *save; -#endif /* CONTEXT_THREADS */ - xbt_context_function_t code; /* the scheduler fonction */ + ex_ctx_t *exception; /* exception container -- only in ucontext&java, os_threads deals with it for us otherwise */ +# endif /* CONTEXT_THREADS */ +#endif /* JAVA_SIMGRID */ + + /* What to run */ + xbt_main_func_t code; /* the scheduled fonction */ int argc; char **argv; - void_f_pvoid_t *startup_func; + + /* Init/exit functions */ + void_f_pvoid_t startup_func; void *startup_arg; - void_f_pvoid_t *cleanup_func; + void_f_pvoid_t cleanup_func; void *cleanup_arg; - ex_ctx_t *exception; /* exception */ - int iwannadie; + int iwannadie; /* Set to true by the context when it wants to commit suicide */ } s_xbt_context_t;