X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8267a61f91f5ed9e7368d3059e9d53b96cc8fcb7..a2a1aee909cfa9076f9dbe34778140af74dfebd3:/src/xbt/context_private.h diff --git a/src/xbt/context_private.h b/src/xbt/context_private.h index 386497863c..85d35e39e1 100644 --- a/src/xbt/context_private.h +++ b/src/xbt/context_private.h @@ -22,33 +22,51 @@ #include "xbt/ex.h" #ifdef CONTEXT_THREADS -# include "xbt/xbt_thread.h" +# include "xbt/xbt_os_thread.h" #else # 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 */ + + /* 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 */ +#else +# ifdef CONTEXT_THREADS + xbt_os_thread_t thread; /* a plain dumb thread (portable to posix or windows) */ +# 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 */ +# endif /* CONTEXT_THREADS */ +#endif /* JAVA_SIMGRID */ + + /* What we need to synchronize the process */ +#if defined(JAVA_SIMGRID) || defined(CONTEXT_THREADS) + xbt_os_cond_t cond; /* the condition used to synchronize the process */ + xbt_os_mutex_t mutex; /* the mutex used to synchronize the process */ +#endif + + /* What to run */ + xbt_main_func_t code; /* the scheduled fonction */ int argc; char **argv; + + /* Init/exit functions */ void_f_pvoid_t *startup_func; void *startup_arg; void_f_pvoid_t *cleanup_func; void *cleanup_arg; - ex_ctx_t *exception; /* exception */ + + ex_ctx_t *exception; /* exception container */ + int iwannadie; /* Set to true by the context when it wants to commit suicide */ + + } s_xbt_context_t;