X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5f69a2d25e1b7ad06dac0ab478a7047eebc8eab1..9889deb10c0b29c3c5a2ae25ac0c4b9e25e8334e:/src/simix/smx_context_sysv.c diff --git a/src/simix/smx_context_sysv.c b/src/simix/smx_context_sysv.c index 758f7fed7a..f65212cc2e 100644 --- a/src/simix/smx_context_sysv.c +++ b/src/simix/smx_context_sysv.c @@ -12,6 +12,7 @@ #include "smx_private.h" #include "gras_config.h" #include "context_sysv_config.h" /* loads context system definitions */ +#include "mc/mc.h" #ifdef _XBT_WIN32 # include /* context relative declarations */ @@ -25,6 +26,15 @@ XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(simix_context); +typedef struct s_smx_ctx_sysv { + s_smx_ctx_base_t super; /* Fields of super implementation */ + ucontext_t uc; /* the ucontext that executes the code */ +#ifdef HAVE_VALGRIND_VALGRIND_H + unsigned int valgrind_stack_id; /* the valgrind stack id */ +#endif + char stack[0]; /* the thread stack (must remain the last element of the structure) */ +} s_smx_ctx_sysv_t, *smx_ctx_sysv_t; + #ifdef CONTEXT_THREADS static xbt_parmap_t sysv_parmap; static ucontext_t* sysv_workers_stacks; /* space to save the worker's stack in each thread */ @@ -158,6 +168,9 @@ smx_ctx_sysv_create_context_sized(size_t size, xbt_main_func_t code, sysv_maestro_context = context; } + if(MC_IS_ENABLED && code) + MC_new_stack_area(context, ((smx_process_t)((smx_context_t)context)->data)->name, &(context->uc)); + return (smx_context_t) context; }