X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/2959d30f87f56782d55ac870cd66b0f622a2925c..5724727de91d9bdecc5c89ce31ab12acde2e1232:/src/jmsg.c?ds=sidebyside diff --git a/src/jmsg.c b/src/jmsg.c index 30b5c2a61a..2013fd25c2 100644 --- a/src/jmsg.c +++ b/src/jmsg.c @@ -104,10 +104,9 @@ Java_org_simgrid_msg_MsgNative_processCreate(JNIEnv * env, jclass cls, 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); @@ -177,9 +176,6 @@ Java_org_simgrid_msg_MsgNative_processKill(JNIEnv * env, jclass cls, 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) */ @@ -390,7 +386,10 @@ Java_org_simgrid_msg_MsgNative_hostGetName(JNIEnv * env, jclass cls, JNIEXPORT jint JNICALL Java_org_simgrid_msg_MsgNative_hostGetNumber(JNIEnv * env, jclass cls) { - return (jint) MSG_get_host_number(); + xbt_dynar_t hosts = MSG_hosts_as_dynar(); + int nb_host = xbt_dynar_length(hosts); + xbt_dynar_free(&hosts); + return (jint) nb_host; } JNIEXPORT jobject JNICALL @@ -726,13 +725,11 @@ Java_org_simgrid_msg_MsgNative_taskDestroy(JNIEnv * env, jclass cls, /* 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); @@ -754,7 +751,7 @@ Java_org_simgrid_msg_MsgNative_taskExecute(JNIEnv * env, jclass cls, 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))); } @@ -763,13 +760,6 @@ Java_org_simgrid_msg_MsgNative_taskExecute(JNIEnv * env, jclass cls, * Unsortable functions * ***************************************************************************************/ - -JNIEXPORT jint JNICALL -Java_org_simgrid_msg_Msg_getErrCode(JNIEnv * env, jclass cls) -{ - return (jint) MSG_get_errno(); -} - JNIEXPORT jdouble JNICALL Java_org_simgrid_msg_Msg_getClock(JNIEnv * env, jclass cls) { @@ -798,7 +788,6 @@ Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) 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); } @@ -816,8 +805,8 @@ JNIEXPORT void JNICALL JNICALL Java_org_simgrid_msg_Msg_run(JNIEnv * env, jclass cls) { MSG_error_t rv; - int index; //xbt_fifo_item_t item = NULL; - m_host_t *hosts; + int index; + xbt_dynar_t hosts; jobject jhost; /* Run everything */ @@ -832,22 +821,26 @@ JNIEXPORT void JNICALL XBT_INFO("Clean java world"); /* Cleanup java hosts */ - hosts = MSG_get_host_table(); - for (index = 0; index < MSG_get_host_number() - 1; index++) { - jhost = (jobject) hosts[index]->data; + hosts = MSG_hosts_as_dynar(); + for (index = 0; index < xbt_dynar_length(hosts) - 1; index++) { + jhost = (jobject) xbt_dynar_get_as(hosts,index,m_host_t)->data; if (jhost) jhost_unref(env, jhost); } - + xbt_dynar_free(&hosts); XBT_INFO("Clean native world"); - /* cleanup native stuff */ - rv = MSG_OK != MSG_clean(); +} +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) @@ -900,8 +893,8 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) jstring jname; m_host_t host; - int count = MSG_get_host_number(); - m_host_t *table = MSG_get_host_table(); + xbt_dynar_t table = MSG_hosts_as_dynar(); + int count = xbt_dynar_length(table); jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host"); @@ -917,7 +910,7 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) } for (index = 0; index < count; index++) { - host = table[index]; + host = xbt_dynar_get_as(table,index,m_host_t); jhost = (jobject) (MSG_host_get_data(host)); if (!jhost) { @@ -930,7 +923,7 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) (*env)->SetObjectArrayElement(env, jtable, index, jhost); } - + xbt_dynar_free(&table); return jtable; }