From 07590d530fdab126f1f35077b6d2de7e81bdbf13 Mon Sep 17 00:00:00 2001 From: Martin Quinson Date: Thu, 8 Nov 2012 23:53:48 +0100 Subject: [PATCH 1/1] New function Process.getCount() --- ChangeLog | 2 ++ org/simgrid/msg/Process.java | 7 +++++++ src/jmsg_process.c | 21 ++++++++++++++++++--- src/jmsg_process.h | 4 ++++ 4 files changed, 31 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 756275795e..9dccfa1342 100644 --- a/ChangeLog +++ b/ChangeLog @@ -13,6 +13,8 @@ SimGrid-java (3.8) unstable; urgency=low * Add Process.getProperty, Host.getProperty, Host.getProperty: allows you to retrieve the properties of the processes/hosts * Deprecate Msg.clean(): you can just forget about it now. + * New function Process.getCount(), that only works when compiling + with the not yet released version 3.9 of the C library. * New context factory based on Coroutines. It mandates a modified JVM but then, the simulations run about five times faster, and there is diff --git a/org/simgrid/msg/Process.java b/org/simgrid/msg/Process.java index e8ed072546..9d9065a315 100644 --- a/org/simgrid/msg/Process.java +++ b/org/simgrid/msg/Process.java @@ -406,4 +406,11 @@ public abstract class Process implements Runnable { static { nativeInit(); } + /** + * This static method returns the current amount of processes running + * + * @return The count of the running processes + */ + public native static int getCount(); + } diff --git a/src/jmsg_process.c b/src/jmsg_process.c index 7773eeb1ea..aaa73e70ef 100644 --- a/src/jmsg_process.c +++ b/src/jmsg_process.c @@ -266,7 +266,8 @@ Java_org_simgrid_msg_Process_resume(JNIEnv * env, jxbt_check_res("MSG_process_resume()", rv, MSG_OK, bprintf("unexpected error , please report this bug")); } -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setAutoRestart +JNIEXPORT void JNICALL +Java_org_simgrid_msg_Process_setAutoRestart (JNIEnv *env, jobject jprocess, jboolean jauto_restart) { msg_process_t process = jprocess_to_native_process(jprocess, env); xbt_ex_t e; @@ -285,7 +286,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setAutoRestart xbt_ex_free(e); } } -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_restart +JNIEXPORT void JNICALL +Java_org_simgrid_msg_Process_restart (JNIEnv *env, jobject jprocess) { msg_process_t process = jprocess_to_native_process(jprocess, env); xbt_ex_t e; @@ -318,7 +320,8 @@ Java_org_simgrid_msg_Process_isSuspended(JNIEnv * env, return (jboolean) MSG_process_is_suspended(process); } -JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep +JNIEXPORT void JNICALL +Java_org_simgrid_msg_Process_sleep (JNIEnv *env, jclass cls, jlong jmillis, jint jnanos) { double time = jmillis / 1000 + jnanos / 1000; @@ -398,3 +401,15 @@ Java_org_simgrid_msg_Process_setKillTime (JNIEnv *env , jobject jprocess, jdoubl msg_process_t process = jprocess_to_native_process(jprocess, env); MSG_process_set_kill_time(process, (double)jkilltime); } + +JNIEXPORT jint JNICALL +Java_org_simgrid_msg_Process_getCount(JNIEnv * env, jclass cls) { + /* FIXME: the next test on SimGrid version is to ensure that this still compiles with SG 3.8 while the C function were added in SG 3.9 only. + * This kind of pimple becomes mandatory when you get so slow to release the java version that it begins evolving further after the C release date. + */ +#if SIMGRID_VERSION >= 30900 + return (jint) MSG_process_get_number(); +#else + return (jint) -1; +#endif +} diff --git a/src/jmsg_process.h b/src/jmsg_process.h index cfc705139b..566a877ab1 100644 --- a/src/jmsg_process.h +++ b/src/jmsg_process.h @@ -261,4 +261,8 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_migrate JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setKillTime (JNIEnv *, jobject, jdouble); +JNIEXPORT jint JNICALL +Java_org_simgrid_msg_Process_getCount(JNIEnv * env, jclass cls); + + #endif /* !MSG_JPROCESS_H */ -- 2.20.1