Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Fix an issue in smx_ctx_cojava_runall ie do not try to run when no process exists
authorJonathan Rouzaud-Cornabas <jonathan.rouzaud-cornabas@ens-lyon.fr>
Thu, 11 Oct 2012 15:38:44 +0000 (17:38 +0200)
committerJonathan Rouzaud-Cornabas <jonathan.rouzaud-cornabas@ens-lyon.fr>
Thu, 11 Oct 2012 15:38:44 +0000 (17:38 +0200)
examples/masterslave/masterslaveDeployment.xml
src/smx_context_cojava.c

index 6c01ac0..7794206 100644 (file)
@@ -2,7 +2,7 @@
 <!DOCTYPE platform SYSTEM "http://simgrid.gforge.inria.fr/simgrid.dtd">
 <platform version="3">
   <process host="Jacquelin" function="masterslave.Master">
-     <argument value="5"/>     <!-- Amount of tasks to dispatch -->
+     <argument value="5000"/>     <!-- Amount of tasks to dispatch -->
      <argument value="50000"/> <!-- Computation size of each task -->
      <argument value="10"/>    <!-- Communication size of each one -->
      <argument value="7"/>     <!-- Amount of slaves waiting for orders -->
index 42c655e..4e43ef7 100644 (file)
@@ -83,6 +83,7 @@ void SIMIX_ctx_cojava_factory_init(smx_context_factory_t * factory)
 
   jclass class_thread = (*global_env)->FindClass(global_env, "java/lang/Thread");
   xbt_assert((class_thread != NULL), "Can't find java.lang.Thread class");
+  
   jclass class_coroutine_support = (*global_env)->FindClass(global_env, "java/dyn/CoroutineSupport");
   xbt_assert((class_coroutine_support != NULL), "Can't find java.dyn.CoroutineSupport class");
   jmethodID thread_get_current = (*global_env)->GetStaticMethodID(global_env, class_thread, "currentThread", "()Ljava/lang/Thread;");
@@ -244,10 +245,12 @@ static void smx_ctx_cojava_runall(void)
 {
   cojava_processes = SIMIX_process_get_runnable();
   smx_process_t process;
-  process = xbt_dynar_get_as(cojava_processes, 0, smx_process_t);
-  cojava_process_index = 1;
-  /* Execute the first process */
-  smx_ctx_cojava_resume(SIMIX_process_get_context(process));
+  if (xbt_dynar_length(cojava_processes) > 0) {
+    process = xbt_dynar_get_as(cojava_processes, 0, smx_process_t);
+    cojava_process_index = 1;
+    /* Execute the first process */
+    smx_ctx_cojava_resume(SIMIX_process_get_context(process));
+  }
 }
 
 static void smx_ctx_cojava_create_coroutine(smx_ctx_cojava_t context) {