X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/713ee949e0e281b87dd5d94754947447f1126bfa..e51ea751d20f2437b9b350a3bab1db3c257fb54f:/src/simix/smx_context_raw.c diff --git a/src/simix/smx_context_raw.c b/src/simix/smx_context_raw.c index 9a18df8c0b..fa653a78c8 100644 --- a/src/simix/smx_context_raw.c +++ b/src/simix/smx_context_raw.c @@ -6,7 +6,7 @@ /* 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 "simix/private.h" +#include "smx_private.h" #include "xbt/parmap.h" #ifdef HAVE_VALGRIND_VALGRIND_H @@ -37,7 +37,7 @@ static xbt_os_thread_key_t raw_worker_id_key; /* thread-specific storage for the static unsigned long raw_process_index = 0; /* index of the next process to run in the * list of runnable processes */ -smx_ctx_raw_t raw_maestro_context; +static smx_ctx_raw_t raw_maestro_context; extern raw_stack_t raw_makecontext(char* malloced_stack, int stack_size, rawctx_entry_point_t entry_point, void* arg); @@ -97,10 +97,14 @@ __asm__ ( ); #elif PROCESSOR_x86_64 __asm__ ( -#if defined(APPLE) || defined(_WIN32) +#if defined(APPLE) ".text\n" ".globl _raw_makecontext\n" "_raw_makecontext:\n" +#elif defined(_WIN32) + ".text\n" + ".globl raw_makecontext\n" + "raw_makecontext:\n" #else ".text\n" ".globl raw_makecontext\n" @@ -128,10 +132,14 @@ __asm__ ( ); __asm__ ( -#if defined(APPLE) || defined(_WIN32) +#if defined(APPLE) ".text\n" ".globl _raw_swapcontext\n" "_raw_swapcontext:\n" +#elif defined(_WIN32) + ".text\n" + ".globl raw_swapcontext\n" + "raw_swapcontext:\n" #else ".text\n" ".globl raw_swapcontext\n" @@ -168,7 +176,7 @@ __asm__ ( ); #else -/* If you implement raw contextes for other processors, don't forget to +/* If you implement raw contexts for other processors, don't forget to update the definition of HAVE_RAWCTX in buildtools/Cmake/CompleteInFiles.cmake */ raw_stack_t raw_makecontext(char* malloced_stack, int stack_size, @@ -231,7 +239,7 @@ void SIMIX_ctx_raw_factory_init(smx_context_factory_t *factory) if (SIMIX_context_is_parallel()) { #ifdef CONTEXT_THREADS int nthreads = SIMIX_context_get_nthreads(); - raw_parmap = xbt_parmap_new(nthreads); + raw_parmap = xbt_parmap_new(nthreads, SIMIX_context_get_parallel_mode()); raw_workers_stacks = xbt_new(raw_stack_t, nthreads); xbt_os_thread_key_create(&raw_worker_id_key); #endif @@ -327,7 +335,6 @@ smx_ctx_raw_create_context(xbt_main_func_t code, int argc, char **argv, */ static void smx_ctx_raw_free(smx_context_t context) { - if (context) { #ifdef HAVE_VALGRIND_VALGRIND_H