Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
split simulation run and simulation cleanup so that users can peek info out of it...
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 19 Oct 2011 12:06:11 +0000 (14:06 +0200)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 19 Oct 2011 12:06:11 +0000 (14:06 +0200)
org/simgrid/msg/Msg.java
src/jmsg.c
src/jmsg.h

index 64c0713..883dbf5 100644 (file)
@@ -76,14 +76,29 @@ public final class Msg {
        public final static native void init(String[]args);
 
        /**
-        * Run the MSG simulation, and cleanup everything afterward.
+        * Run the MSG simulation.
         *
-        * If you want to chain simulations in the same process, you
-        * should call again createEnvironment and deployApplication afterward.
+        * The simulation is not cleaned afterward (see  
+        * {@link #clean()} if you really insist on cleaning the C side), so you can freely 
+        * retrieve the informations that you want from the simulation. In particular, retrieving the status 
+        * of a process or the current date is perfectly ok. 
         *
-        * @see                    MSG_run, MSG_clean
+        * @see                    MSG_run
         */
        public final static native void run() ;
+       
+       /**
+        * Cleanup the MSG simulation.
+        * 
+        * This function is only useful if you want to chain the simulations within 
+        * the same environment. But actually, it's not sure at all that cleaning the 
+        * JVM is faster than restarting a new one, so it's probable that using this 
+        * function is not a brilliant idea. Do so at own risk.
+        *      
+        * @see                    MSG_clean
+        */
+       public final static native void clean();
+       
 
        /**
         * The native implemented method to create the environment of the simulation.
index dbe6099..b25f487 100644 (file)
@@ -837,13 +837,17 @@ JNIEXPORT void JNICALL
   }
 
   XBT_INFO("Clean native world");
-  /* cleanup native stuff */
-  rv = MSG_OK != MSG_clean();
+}
+JNIEXPORT void JNICALL
+    JNICALL Java_org_simgrid_msg_Msg_clean(JNIEnv * env, jclass cls)
+{
+  /* cleanup native stuff. Calling it is ... useless since leaking memory at the end of the simulation is a non-issue */
+  MSG_error_t rv = MSG_OK != MSG_clean();
   jxbt_check_res("MSG_clean()", rv, MSG_OK,
                  bprintf
                  ("unexpected error : MSG_clean() failed .. please report this bug "));
 }
-
+   
 JNIEXPORT jint JNICALL
 Java_org_simgrid_msg_MsgNative_processKillAll(JNIEnv * env, jclass cls,
                                           jint jresetPID)
index 8bf5a94..bfa02c1 100644 (file)
@@ -293,6 +293,8 @@ JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Msg_getClock(JNIEnv *, jclass);
 
 JNIEXPORT void JNICALL
     JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls);
+JNIEXPORT void JNICALL
+    JNICALL Java_org_simgrid_msg_Msg_clean(JNIEnv * env, jclass cls);
 
 JNIEXPORT void JNICALL
 Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs);