Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Revert "got a "might be clobbered by ‘longjmp’ or ‘vfork’" error when compiled"
[simgrid.git] / src / simix / smx_context_raw.c
index 9a18df8..fa653a7 100644 (file)
@@ -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