1 /* Functions related to the java process instances. */
3 /* Copyright (c) 2007-2014. The SimGrid Team.
4 * All rights 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. */
10 #define MSG_JPROCESS_H
14 #include <simgrid/simix.h>
17 extern jfieldID jprocess_field_Process_bind;
18 extern jfieldID jprocess_field_Process_host;
19 extern jfieldID jprocess_field_Process_killTime;
20 extern jfieldID jprocess_field_Process_id;
21 extern jfieldID jprocess_field_Process_name;
22 extern jfieldID jprocess_field_Process_pid;
23 extern jfieldID jprocess_field_Process_ppid;
25 JNIEXPORT void JNICALL
26 Java_org_simgrid_msg_Process_exit(JNIEnv *env, jobject);
29 jobject native_to_java_process(msg_process_t process);
32 * This function returns a global reference to the java process instance
33 * specified by the parameter jprocess.
35 * @param jprocess The original java process instance.
36 * @param env The env of the current thread
38 * @return The global reference to the original java process
41 jobject jprocess_new_global_ref(jobject jprocess, JNIEnv * env);
44 * This function delete a global reference to a java process instance.
45 * If the java process is alive the function joins it and stops it before.
47 * @param The global refernce to delete.
48 * @param env The env of the current thread
50 * @see jprocess_join()
51 * @see jprocess_exit()
53 void jprocess_delete_global_ref(jobject jprocess, JNIEnv * env);
57 * This function waits for a java process to terminate.
59 * @param jprocess The java process ot wait for.
60 * @param env The env of the current thread
62 * @exception If the class Process is not found the function throws
63 * the ClassNotFoundException. If the methos join() of
64 * this class is not found the function throws the exception
65 * NotSuchMethodException.
68 void jprocess_join(jobject jprocess, JNIEnv * env);
70 * This function associated a native process to a java process instance.
72 * @param jprocess The java process instance.
73 * @param process The native process to bind.
74 * @param env The env of the current thread
76 * @exception If the class Process is not found the function throws
77 * the ClassNotFoundException. If the field bind of
78 * this class is not found the function throws the exception
79 * NotSuchFieldException.
81 void jprocess_bind(jobject jprocess, msg_process_t process, JNIEnv * env);
84 * This function returns a native process from a java process instance.
86 * @param jprocess The java process object from which get the native process.
87 * @param env The env of the current thread
89 * @return The function returns the native process associated to the
90 * java process object.
92 * @exception If the class Process is not found the function throws
93 * the ClassNotFoundException. If the field bind of
94 * this class is not found the function throws the exception
95 * NotSuchFieldException.
97 msg_process_t jprocess_to_native_process(jobject jprocess, JNIEnv * env);
100 * This function gets the id of the specified java process.
102 * @param jprocess The java process to get the id.
103 * @param env The env of the current thread
105 * @exception If the class Process is not found the function throws
106 * the ClassNotFoundException. If the field id of
107 * this class is not found the function throws the exception
108 * NotSuchFieldException.
110 * @return The id of the specified java process.
112 jlong jprocess_get_id(jobject jprocess, JNIEnv * env);
115 * This function tests if a java process instance is valid.
116 * A java process object is valid if it is bind to a native
119 * @param jprocess The java process to test the validity.
120 * @param env The env of the current thread
122 * @return If the java process is valid the function returns true.
123 * Otherwise the function returns false.
125 jboolean jprocess_is_valid(jobject jprocess, JNIEnv * env);
128 * This function gets the name of the specified java process.
130 * @param jprocess The java process to get the name.
131 * @param env The env of the current thread
133 * @exception If the class Process is not found the function throws
134 * the ClassNotFoundException. If the field name of
135 * this class is not found the function throws the exception
136 * NotSuchFieldException.
138 * @return The name of the specified java process.
140 jstring jprocess_get_name(jobject jprocess, JNIEnv * env);
143 * Class org_simgrid_msg_Process
147 JNIEXPORT void JNICALL
148 Java_org_simgrid_msg_Process_nativeInit(JNIEnv *env, jclass cls);
151 * Class org_simgrid_msg_Process
153 * Signature (Lorg/simgrid/msg/Host;)V
155 JNIEXPORT void JNICALL
156 Java_org_simgrid_msg_Process_create(JNIEnv * env,
157 jobject jprocess_arg,
161 * Class org_simgrid_msg_Process
165 JNIEXPORT jint JNICALL Java_org_simgrid_msg_Process_killAll
166 (JNIEnv *, jclass, jint);
169 * Class org_simgrid_msg_Process
171 * Signature (I)Lorg/simgrid/msg/Process;
173 JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_fromPID
174 (JNIEnv *, jclass, jint);
176 * Class org_simgrid_msg_Process
180 JNIEXPORT jobject JNICALL
181 Java_org_simgrid_msg_Process_getProperty(JNIEnv *env, jobject jprocess, jobject jname);
183 * Class org_simgrid_msg_Process
184 * Method currentProcess
185 * Signature ()Lorg/simgrid/msg/Process;
187 JNIEXPORT jobject JNICALL Java_org_simgrid_msg_Process_currentProcess
190 * Class org_simgrid_msg_Process
192 * Signature (Lorg/simgrid/msg/Process;)V
194 JNIEXPORT void JNICALL
195 Java_org_simgrid_msg_Process_suspend(JNIEnv * env,
198 * Class org_simgrid_msg_Process
200 * Signature (Lorg/simgrid/msg/Process;)V
202 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_resume
205 * Class org_simgrid_msg_Process
206 * Method setAutoRestart
207 * Signature (Lorg/simgrid/msg/Process;Z)V
209 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setAutoRestart
210 (JNIEnv *, jobject, jboolean);
212 * Class org_simgrid_msg_Process
214 * Signature (Lorg/simgrid/msg/Process;)V
216 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_restart
220 * Class org_simgrid_msg_Process
222 * Signature (Lorg/simgrid/msg/Process;)Z
224 JNIEXPORT jboolean JNICALL Java_org_simgrid_msg_Process_isSuspended
227 * Class org_simgrid_msg_Process
231 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_sleep
232 (JNIEnv *, jclass, jlong, jint);
235 * Class org_simgrid_msg_Process
239 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_waitFor
240 (JNIEnv *, jobject, jdouble);
242 * Class org_simgrid_msg_Process
244 * Signature (Lorg/simgrid/msg/Process;)V
246 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_kill
250 * Class org_simgrid_msg_Process
252 * Signature (Lorg/simgrid/msg/Host;)V
254 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_migrate
255 (JNIEnv *, jobject, jobject);
257 * Class org_simgrid_msg_Process
261 JNIEXPORT void JNICALL Java_org_simgrid_msg_Process_setKillTime
262 (JNIEnv *, jobject, jdouble);
264 JNIEXPORT jint JNICALL
265 Java_org_simgrid_msg_Process_getCount(JNIEnv * env, jclass cls);
268 #endif /* !MSG_JPROCESS_H */