Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
ensures that the native libraries are always loaded before trying to access them
authorMartin Quinson <martin.quinson@loria.fr>
Wed, 5 Dec 2012 15:20:12 +0000 (16:20 +0100)
committerMartin Quinson <martin.quinson@loria.fr>
Wed, 5 Dec 2012 15:20:12 +0000 (16:20 +0100)
org/simgrid/msg/Comm.java
org/simgrid/msg/File.java
org/simgrid/msg/Msg.java
org/simgrid/msg/Mutex.java
org/simgrid/msg/Process.java
org/simgrid/msg/RngStream.java
org/simgrid/msg/Task.java
org/simgrid/trace/Trace.java

index 66d264c..63e6d1e 100644 (file)
@@ -83,6 +83,7 @@ public class Comm {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }       
 }
index fa42c6d..9076bcf 100644 (file)
@@ -61,6 +61,7 @@ public class File {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }       
 }
\ No newline at end of file
index ba290f8..d722813 100644 (file)
@@ -19,7 +19,10 @@ import java.io.File;
 
 public final class Msg {
        /* Statically load the library which contains all native functions used in here */
-       static {
+       static private boolean isNativeInited = false;
+       public static void nativeInit() {
+               if (isNativeInited)
+                       return;
                try {
                        /* prefer the version on disk, if existing */
                        System.loadLibrary("SG_java");
@@ -28,6 +31,10 @@ public final class Msg {
                        loadLib("simgrid");
                        loadLib("SG_java");
                }
+               isNativeInited = true;
+       }
+       static {
+               nativeInit();
        }
        private static void loadLib (String name) {
                String Path = "NATIVE/"+System.getProperty("os.name")+"/"+System.getProperty("os.arch")+"/";
index 7032b6e..cb16ffb 100644 (file)
@@ -31,6 +31,7 @@ public class Mutex {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }       
 }
index 9d9065a..edde2bf 100644 (file)
 package org.simgrid.msg;
  
 import java.util.Arrays;
-import java.util.Hashtable;
 import java.util.Vector;
-import java.lang.Runnable;
-import java.util.concurrent.Semaphore;
 
 /**
  * A process may be defined as a code, with some private data, executing 
@@ -404,6 +401,7 @@ public abstract class Process implements Runnable {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }
        /**
index c9f5471..58b9c9e 100644 (file)
@@ -113,6 +113,7 @@ public class RngStream {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }
 }
\ No newline at end of file
index 84eaf88..a81e8fc 100644 (file)
@@ -277,6 +277,7 @@ public class Task {
         */
        public static native void nativeInit();
        static {
+               Msg.nativeInit();
                nativeInit();
        }
 }
index daeed7d..6b51d85 100644 (file)
@@ -13,6 +13,7 @@ package org.simgrid.trace;
 public final class Trace {
        /* Statically load the library which contains all native functions used in here */
        static {
+               Msg.nativeInit();
                try {
                        System.loadLibrary("SG_java_tracing");
                } catch(UnsatisfiedLinkError e) {