X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ab74c9ce5c149e95d518e126e728a693470b9941..c66deda6497d36e70e2485fff5431151be1713c6:/src/bindings/java/org/simgrid/msg/VM.java diff --git a/src/bindings/java/org/simgrid/msg/VM.java b/src/bindings/java/org/simgrid/msg/VM.java index bfd271544c..c762c473ce 100644 --- a/src/bindings/java/org/simgrid/msg/VM.java +++ b/src/bindings/java/org/simgrid/msg/VM.java @@ -1,22 +1,28 @@ -/* JNI interface to virtual machine in Simgrid */ +/* Java bindings of the s4u::VirtualMachine */ -/* Copyright (c) 2006-2014. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2006-2017. The SimGrid Team. All rights reserved. */ /* 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. */ package org.simgrid.msg; -import java.util.ArrayList; public class VM extends Host { // No need to declare a new bind variable: we use the one inherited from the super class Host - private static ArrayList vms= new ArrayList<>(); private Host currentHost; + private int coreAmount = 1; /** Create a `basic' VM (i.e. 1GB of RAM, other values are not taken into account). */ public VM(Host host, String name) { - this(host,name,1024, 0, 0); + this(host,name, /*coreAmount*/1, 1024, 0, 0); + } + + public VM(Host host, String name, int coreAmount) { + this(host,name, coreAmount, 1024, 0, 0); + } + public VM(Host host, String name, int ramSize, int migNetSpeed, int dpIntensity){ + this(host, name, /*coreAmount*/1, ramSize, migNetSpeed, dpIntensity); } /** @@ -27,23 +33,19 @@ public class VM extends Host { * @param migNetSpeed (network bandwith allocated for migrations in MB/s, if you don't know put zero ;)) * @param dpIntensity (dirty page percentage according to migNetSpeed, [0-100], if you don't know put zero ;)) */ - public VM(Host host, String name, int ramSize, int migNetSpeed, int dpIntensity){ + public VM(Host host, String name, int coreAmount, int ramSize, int migNetSpeed, int dpIntensity){ super(); super.name = name; this.currentHost = host; - create(host, name, ramSize, migNetSpeed, dpIntensity); - vms.add(this); + this.coreAmount = coreAmount; + create(host, name, coreAmount, ramSize, migNetSpeed, dpIntensity); } - public native static VM[] all(); + /** Retrieve the list of all existing VMs */ + public static native VM[] all(); - public static VM getVMByName(String name){ - for (VM vm : vms){ - if (vm.getName().equals(name)) - return vm; - } - return null; - } + /** Retrieve a VM from its name */ + public static native VM getVMByName(String name); /** Shutdown and unref the VM. * @@ -55,14 +57,13 @@ public class VM extends Host { */ public void destroy() { shutdown(); -/// vms.remove(this); } /* Make sure that the GC also destroys the C object */ protected void finalize() throws Throwable { nativeFinalize(); } - public native void nativeFinalize(); + private native void nativeFinalize(); /** Returns whether the given VM is currently suspended */ public native int isCreated(); @@ -82,7 +83,7 @@ public class VM extends Host { * @param migNetSpeed (network bandwith allocated for migrations in MB/s, if you don't know put zero ;)) * @param dpIntensity (dirty page intensity, a percentage of migNetSpeed [0-100], if you don't know put zero ;)) */ - private native void create(Host host, String name, int ramSize, int migNetSpeed, int dpIntensity); + private native void create(Host host, String name, int coreAmount, int ramSize, int migNetSpeed, int dpIntensity); /** @@ -115,7 +116,7 @@ public class VM extends Host { // If the migration correcly returned, then we should change the currentHost value. this.currentHost = destination; } - private native void nativeMigration(Host destination) throws Exception; + private native void nativeMigration(Host destination) throws MsgException; /** Immediately suspend the execution of all processes within the given VM * @@ -134,7 +135,7 @@ public class VM extends Host { public native void resume(); /** Class initializer (for JNI), don't do it yourself */ - public static native void nativeInit(); + private static native void nativeInit(); static { nativeInit(); }