4 * Copyright 2006,2007 Martin Quinson, Malek Cherier All right reserved.
6 * This program is free software; you can redistribute it and/or modify it
7 * under the terms of the license (GNU LGPL) which comes with this package.
9 * This contains the implementation of the functions in relation with the java
14 #include "jmsg_process.h"
15 #include "jxbt_utilities.h"
17 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
21 jprocess_new_global_ref(jobject jprocess,JNIEnv* env) {
22 return (*env)->NewGlobalRef(env,jprocess);
26 jprocess_delete_global_ref(jobject jprocess,JNIEnv* env) {
27 (*env)->DeleteGlobalRef(env,jprocess);
31 jprocess_is_alive(jobject jprocess,JNIEnv* env) {
32 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","isAlive", "()Z");
37 return (*env)->CallBooleanMethod(env,jprocess,id);
41 jprocess_join(jobject jprocess,JNIEnv* env) {
42 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","join", "()V");
47 (*env)->CallVoidMethod(env,jprocess, id);
51 jprocess_exit(jobject jprocess,JNIEnv* env) {
52 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","interrupt", "()V");
57 (*env)->CallVoidMethod(env,jprocess, id);
61 jprocess_yield(jobject jprocess,JNIEnv* env) {
62 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","switchProcess", "()V");
67 (*env)->CallVoidMethod(env,jprocess,id);
71 jprocess_lock_mutex(jobject jprocess,JNIEnv* env) {
72 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","lockMutex", "()V");
77 (*env)->CallVoidMethod(env,jprocess,id);
81 jprocess_unlock_mutex(jobject jprocess,JNIEnv* env) {
82 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","unlockMutex", "()V");
87 (*env)->CallVoidMethod(env,jprocess,id);
92 jprocess_signal_cond(jobject jprocess,JNIEnv* env) {
93 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","signalCond", "()V");
98 (*env)->CallVoidMethod(env,jprocess,id);
102 jprocess_wait_cond(jobject jprocess,JNIEnv* env) {
103 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","waitCond", "()V");
108 (*env)->CallVoidMethod(env,jprocess,id);
113 jprocess_start(jobject jprocess,JNIEnv* env) {
114 jmethodID id = jxbt_get_smethod(env,"simgrid/msg/Process","start", "()V");
119 DEBUG2("jprocess_start(jproc=%p,env=%p)",jprocess,env);
120 (*env)->CallVoidMethod(env,jprocess,id);
121 DEBUG0("jprocess started");
125 jprocess_to_native_process(jobject jprocess,JNIEnv* env) {
126 jfieldID id = jxbt_get_sfield(env,"simgrid/msg/Process","bind", "J");
131 return (m_process_t)(long)(*env)->GetLongField(env,jprocess,id);
135 jprocess_bind(jobject jprocess,m_process_t process,JNIEnv* env) {
136 jfieldID id = jxbt_get_sfield(env,"simgrid/msg/Process","bind", "J");
141 (*env)->SetLongField(env,jprocess,id,(jlong)(long)(process));
145 jprocess_get_id(jobject jprocess,JNIEnv* env) {
146 jfieldID id = jxbt_get_sfield(env,"simgrid/msg/Process","id", "J");
151 return (*env)->GetLongField(env,jprocess,id);
155 jprocess_get_name(jobject jprocess,JNIEnv* env) {
156 jfieldID id = jxbt_get_sfield(env,"simgrid/msg/Process","name", "Ljava/lang/String;");
162 jname = (jstring)(*env)->GetObjectField(env,jprocess,id);
164 return (*env)->NewGlobalRef(env,jname);
169 jprocess_is_valid(jobject jprocess,JNIEnv* env) {
170 jfieldID id = jxbt_get_sfield(env,"simgrid/msg/Process","bind", "J");
175 return (*env)->GetLongField(env,jprocess,id) ? JNI_TRUE : JNI_FALSE;