Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
This was not compiling when sizeof(unsigned long) != sizeof(void*)
authordegomme <augustin.degomme@unibas.ch>
Fri, 4 Mar 2016 13:10:28 +0000 (14:10 +0100)
committerdegomme <augustin.degomme@unibas.ch>
Fri, 4 Mar 2016 13:10:28 +0000 (14:10 +0100)
src/simix/BoostContext.cpp
src/simix/RawContext.cpp
src/simix/UContext.cpp

index 3b4e63f..9972e78 100644 (file)
@@ -55,7 +55,7 @@ public:
 
 bool                BoostContext::parallel_        = false;
 xbt_parmap_t        BoostContext::parmap_          = nullptr;
-unsigned long       BoostContext::threads_working_ = 0;
+uintptr_t       BoostContext::threads_working_ = 0;
 xbt_os_thread_key_t BoostContext::worker_id_key_;
 unsigned long       BoostContext::process_index_   = 0;
 BoostContext*       BoostContext::maestro_context_ = nullptr;
@@ -245,8 +245,8 @@ void BoostParallelContext::suspend()
   }
   else {
     XBT_DEBUG("No more processes to run");
-    unsigned long worker_id =
-      (unsigned long) xbt_os_thread_get_specific(worker_id_key_);
+    uintptr_t worker_id =
+      (uintptr_t) xbt_os_thread_get_specific(worker_id_key_);
     next_context = static_cast<BoostParallelContext*>(
       workers_context_[worker_id]);
   }
@@ -269,7 +269,7 @@ void BoostParallelContext::stop()
 
 void BoostParallelContext::resume()
 {
-  unsigned long worker_id = __sync_fetch_and_add(&threads_working_, 1);
+  uintptr_t worker_id = __sync_fetch_and_add(&threads_working_, 1);
   xbt_os_thread_set_specific(worker_id_key_, (void*) worker_id);
 
   BoostParallelContext* worker_context =
index 9cbb2df..83c3c75 100644 (file)
@@ -85,7 +85,7 @@ ContextFactory* raw_factory()
 #ifdef HAVE_THREAD_CONTEXTS
 static xbt_parmap_t raw_parmap;
 static simgrid::simix::RawContext** raw_workers_context;    /* space to save the worker context in each thread */
-static unsigned long raw_threads_working;     /* number of threads that have started their work */
+static uintptr_t raw_threads_working;     /* number of threads that have started their work */
 static xbt_os_thread_key_t raw_worker_id_key; /* thread-specific storage for the thread id */
 #endif
 #ifdef ADAPTIVE_THRESHOLD
@@ -440,10 +440,10 @@ void RawContext::suspend_parallel()
   else {
     /* all processes were run, go to the barrier */
     XBT_DEBUG("No more processes to run");
-    unsigned long worker_id = (unsigned long)(uintptr_t)
+    uintptr_t worker_id = (uintptr_t)
       xbt_os_thread_get_specific(raw_worker_id_key);
     next_context = (RawContext*) raw_workers_context[worker_id];
-    XBT_DEBUG("Restoring worker stack %lu (working threads = %lu)",
+    XBT_DEBUG("Restoring worker stack %zu (working threads = %zu)",
         worker_id, raw_threads_working);
   }
 
@@ -469,8 +469,8 @@ void RawContext::resume_serial()
 void RawContext::resume_parallel()
 {
 #ifdef HAVE_THREAD_CONTEXTS
-  unsigned long worker_id = __sync_fetch_and_add(&raw_threads_working, 1);
-  xbt_os_thread_set_specific(raw_worker_id_key, (void*)(uintptr_t) worker_id);
+  uintptr_t worker_id = __sync_fetch_and_add(&raw_threads_working, 1);
+  xbt_os_thread_set_specific(raw_worker_id_key, (void*) worker_id);
   RawContext* worker_context = (RawContext*) SIMIX_context_self();
   raw_workers_context[worker_id] = worker_context;
   XBT_DEBUG("Saving worker stack %lu", worker_id);
index 1669ed8..6d58316 100644 (file)
@@ -68,7 +68,7 @@ namespace simix {
 #ifdef HAVE_THREAD_CONTEXTS
 static xbt_parmap_t sysv_parmap;
 static simgrid::simix::ParallelUContext** sysv_workers_context;   /* space to save the worker's context in each thread */
-static unsigned long sysv_threads_working;     /* number of threads that have started their work */
+static uintptr_t sysv_threads_working;     /* number of threads that have started their work */
 static xbt_os_thread_key_t sysv_worker_id_key; /* thread-specific storage for the thread id */
 #endif
 static unsigned long sysv_process_index = 0;   /* index of the next process to run in the
@@ -316,7 +316,7 @@ void ParallelUContext::resume()
 {
 #ifdef HAVE_THREAD_CONTEXTS
   // What is my containing body?
-  unsigned long worker_id = __sync_fetch_and_add(&sysv_threads_working, 1);
+  uintptr_t worker_id = __sync_fetch_and_add(&sysv_threads_working, 1);
   // Store the number of my containing body in os-thread-specific area :
   xbt_os_thread_set_specific(sysv_worker_id_key, (void*) worker_id);
   // Get my current soul:
@@ -373,8 +373,8 @@ void ParallelUContext::suspend()
     XBT_DEBUG("No more processes to run");
     // Get back the identity of my body that was stored when starting
     // the scheduling round
-    unsigned long worker_id =
-        (unsigned long) xbt_os_thread_get_specific(sysv_worker_id_key);
+    uintptr_t worker_id =
+        (uintptr_t) xbt_os_thread_get_specific(sysv_worker_id_key);
     // Deduce the initial soul of that body
     next_context = (ParallelUContext*) sysv_workers_context[worker_id];
     // When given that soul, the body will wait for the next scheduling round