From 3cc453fa197ea95b23e3be8e5f6e886be55abc48 Mon Sep 17 00:00:00 2001 From: Frederic Suter Date: Wed, 22 Nov 2017 01:29:06 +0100 Subject: [PATCH] add Process.daemonize to the Java bindings (and call s4u equivalent from MSG directly) --- src/bindings/java/jmsg_process.cpp | 12 ++++++++++++ src/bindings/java/jmsg_process.h | 1 + src/msg/msg_process.cpp | 2 +- 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/bindings/java/jmsg_process.cpp b/src/bindings/java/jmsg_process.cpp index ad3f399432..1d4b58eadf 100644 --- a/src/bindings/java/jmsg_process.cpp +++ b/src/bindings/java/jmsg_process.cpp @@ -91,6 +91,18 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv* env, jobject env->SetIntField(jprocess, jprocess_field_Process_ppid, (jint) MSG_process_get_PPID(process)); } +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_daemonize(JNIEnv* env, jobject jprocess) +{ + msg_process_t process = jprocess_to_native(jprocess, env); + + if (not process) { + jxbt_throw_notbound(env, "process", jprocess); + return; + } + + MSG_process_daemonize(process); +} + JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_killAll(JNIEnv * env, jclass cls, jint jresetPID) { return (jint) MSG_process_killall((int) jresetPID); diff --git a/src/bindings/java/jmsg_process.h b/src/bindings/java/jmsg_process.h index f77182435a..597f5b270d 100644 --- a/src/bindings/java/jmsg_process.h +++ b/src/bindings/java/jmsg_process.h @@ -47,6 +47,7 @@ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jcla /* Implement the Java API */ JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_create(JNIEnv* env, jobject jprocess_arg, jobject jhostname); +JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_daemonize(JNIEnv* env, jobject jprocess); JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_killAll(JNIEnv* env, jclass cls, jint jresetPID); JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_fromPID(JNIEnv* env, jclass cls, jint pid); JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_getProperty(JNIEnv* env, jobject jprocess, jobject jname); diff --git a/src/msg/msg_process.cpp b/src/msg/msg_process.cpp index b6675690d7..8af7ea5e86 100644 --- a/src/msg/msg_process.cpp +++ b/src/msg/msg_process.cpp @@ -507,7 +507,7 @@ XBT_PUBLIC(msg_process_t) MSG_process_restart(msg_process_t process) { */ XBT_PUBLIC(void) MSG_process_daemonize(msg_process_t process) { - simgrid::simix::kernelImmediate([process]() { process->getImpl()->daemonize(); }); + process->daemonize(); } /** @ingroup m_process_management -- 2.20.1