m_process_t process; /* the native process to create */
m_host_t host; /* Where that process lives */
- DEBUG4("Java_org_simgrid_msg_MsgNative_processCreate(env=%p,cls=%p,jproc=%p,jhost=%p)",
+ XBT_DEBUG("Java_org_simgrid_msg_MsgNative_processCreate(env=%p,cls=%p,jproc=%p,jhost=%p)",
env, cls, jprocess_arg, jhost);
MSG_process_set_data(process,&process);
/* release our reference to the process name (variable name becomes invalid) */
- (*env)->ReleaseStringUTFChars(env, jname, name);
+ //FIXME : This line should be uncommented but with mac it doesn't work. BIG WARNING
+ //(*env)->ReleaseStringUTFChars(env, jname, name);
-
-
/* bind the java process instance to the native process */
jprocess_bind(jprocess, process, env);
return;
}
- /* delete the global reference */
- jprocess_delete_global_ref(native_to_java_process(process), env);
-
/* kill the native process (this wrapper is call by the destructor of the java
* process instance)
*/
}
JNIEXPORT void JNICALL
-Java_org_simgrid_msg_MsgNative_processChangeHost(JNIEnv * env, jclass cls,
- jobject jhost)
+Java_org_simgrid_msg_MsgNative_processMigrate(JNIEnv * env, jclass cls,
+ jobject jprocess, jobject jhost)
{
+ m_process_t process = jprocess_to_native_process(jprocess, env);
+
+ if (!process) {
+ jxbt_throw_notbound(env, "process", jprocess);
+ return;
+ }
+
m_host_t host = jhost_get_native(env, jhost);
if (!host) {
}
/* try to change the host of the process */
- MSG_error_t rv = MSG_process_change_host(host);
-
- jxbt_check_res("MSG_process_change_host()", rv, MSG_OK,
+ MSG_error_t rv = MSG_process_migrate(process, host);
+ jxbt_check_res("MSG_process_migrate()", rv, MSG_OK,
bprintf("unexpected error , please report this bug"));
}
/* get the C string from the java string */
const char *name = (*env)->GetStringUTFChars(env, jname, 0);
- DEBUG1("Looking for host '%s'",name);
+ XBT_DEBUG("Looking for host '%s'",name);
/* get the host by name (the hosts are created during the grid resolution) */
host = MSG_get_host_by_name(name);
- DEBUG2("MSG gave %p as native host (simdata=%p)", host,host? host->simdata:NULL);
+ XBT_DEBUG("MSG gave %p as native host (simdata=%p)", host,host? host->simdata:NULL);
if (!host) { /* invalid name */
jxbt_throw_host_not_found(env, name);
/* get the native task */
m_task_t task = jtask_to_native_task(jtask_arg, env);
- jobject jtask;
if (!task) {
jxbt_throw_notbound(env, "task", task);
return;
}
- jtask = (jobject) MSG_task_get_data(task);
MSG_error_t rv = MSG_task_destroy(task);
MSG_error_t rv = MSG_task_execute(task);
jxbt_check_res("MSG_task_execute()", rv,
- MSG_HOST_FAILURE | MSG_TASK_CANCELLED,
+ MSG_HOST_FAILURE | MSG_TASK_CANCELED,
bprintf("while executing task %s",
MSG_task_get_name(task)));
}
jval = (jstring) (*env)->GetObjectArrayElement(env, jargs, index);
tmp = (*env)->GetStringUTFChars(env, jval, 0);
argv[index + 1] = strdup(tmp);
- //argv[index] = strdup(tmp);
(*env)->ReleaseStringUTFChars(env, jval, tmp);
}
JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls)
{
MSG_error_t rv;
- int index; //xbt_fifo_item_t item = NULL;
+ int index;
m_host_t *hosts;
jobject jhost;
/* Run everything */
- INFO0("Ready to run MSG_MAIN");
+ XBT_INFO("Ready to run MSG_MAIN");
rv = MSG_main();
- INFO0("Done running MSG_MAIN");
+ XBT_INFO("Done running MSG_MAIN");
jxbt_check_res("MSG_main()", rv, MSG_OK,
bprintf
("unexpected error : MSG_main() failed .. please report this bug "));
- INFO0("MSG_main finished");
+ XBT_INFO("MSG_main finished");
- INFO0("Clean java world");
+ XBT_INFO("Clean java world");
/* Cleanup java hosts */
hosts = MSG_get_host_table();
for (index = 0; index < MSG_get_host_number() - 1; index++) {
}
- INFO0("Clean native world");
- /* cleanup native stuff */
- rv = MSG_OK != MSG_clean();
+ XBT_INFO("Clean native world");
+}
+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)
return;
}
- MSG_process_kill(process);
+ smx_ctx_java_stop(MSG_process_get_smx_ctx(process));
}
JNIEXPORT void JNICALL
Java_org_simgrid_msg_Msg_info(JNIEnv * env, jclass cls, jstring js)
{
const char *s = (*env)->GetStringUTFChars(env, js, 0);
- INFO1("%s", s);
+ XBT_INFO("%s", s);
(*env)->ReleaseStringUTFChars(env, js, s);
}