From 46adf653a1d01b8e87baa30cc9b92616eee1a788 Mon Sep 17 00:00:00 2001 From: Alexandre Montplaisir Date: Thu, 5 Apr 2012 17:15:57 -0400 Subject: [PATCH] Fix: Make the JNI interface actually work Now a user can import LTTngUst.java (which is now in a proper package) and then define tracepoints in his application with: LTTngUst.tracepointString(name, args); We could eventually ship it in a .jar when the JNI interface is enabled. It's still very basic, only string payloads are implemented, and there is no mechanism to enable/disable trace points call sites at runtime (they are always enabled). The event under which these events appear is "lttng_ust_java:string". Signed-off-by: Alexandre Montplaisir Signed-off-by: Mathieu Desnoyers --- liblttng-ust-java/.gitignore | 4 ++-- liblttng-ust-java/{LTTNG_UST.c => LTTngUst.c} | 5 ++++- .../{LTTNG_UST.java => LTTngUst.java} | 6 ++++-- liblttng-ust-java/Makefile.am | 17 +++++++++-------- 4 files changed, 19 insertions(+), 13 deletions(-) rename liblttng-ust-java/{LTTNG_UST.c => LTTngUst.c} (85%) rename liblttng-ust-java/{LTTNG_UST.java => LTTngUst.java} (88%) diff --git a/liblttng-ust-java/.gitignore b/liblttng-ust-java/.gitignore index ab97d041..677373ea 100644 --- a/liblttng-ust-java/.gitignore +++ b/liblttng-ust-java/.gitignore @@ -1,2 +1,2 @@ -UST.class -UST.h +org_lttng_ust_LTTngUst.h +org/ diff --git a/liblttng-ust-java/LTTNG_UST.c b/liblttng-ust-java/LTTngUst.c similarity index 85% rename from liblttng-ust-java/LTTNG_UST.c rename to liblttng-ust-java/LTTngUst.c index af29c1e9..3d23d6a1 100644 --- a/liblttng-ust-java/LTTNG_UST.c +++ b/liblttng-ust-java/LTTngUst.c @@ -22,7 +22,7 @@ #define TRACEPOINT_CREATE_PROBES #include "lttng_ust_java.h" -JNIEXPORT void JNICALL Java_LTTNG_UST_ust_1java_1event (JNIEnv *env, +JNIEXPORT void JNICALL Java_org_lttng_ust_LTTngUst_tracepointString(JNIEnv *env, jobject jobj, jstring ev_name, jstring args) @@ -33,4 +33,7 @@ JNIEXPORT void JNICALL Java_LTTNG_UST_ust_1java_1event (JNIEnv *env, const char *args_cstr = (*env)->GetStringUTFChars(env, args, &iscopy); tracepoint(lttng_ust_java, string, ev_name_cstr, args_cstr); + + (*env)->ReleaseStringUTFChars(env, ev_name, ev_name_cstr); + (*env)->ReleaseStringUTFChars(env, args, args_cstr); } diff --git a/liblttng-ust-java/LTTNG_UST.java b/liblttng-ust-java/LTTngUst.java similarity index 88% rename from liblttng-ust-java/LTTNG_UST.java rename to liblttng-ust-java/LTTngUst.java index 7ec61103..d3f1edaf 100644 --- a/liblttng-ust-java/LTTNG_UST.java +++ b/liblttng-ust-java/LTTngUst.java @@ -16,8 +16,10 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -class LTTNG_UST { - public static native void lttng_ust_java_string(String name, String arg); +package org.lttng.ust; + +class LTTngUst { + public static native void tracepointString(String name, String arg); static { System.loadLibrary("lttng-ust-java"); } diff --git a/liblttng-ust-java/Makefile.am b/liblttng-ust-java/Makefile.am index 31915d0d..9e01e045 100644 --- a/liblttng-ust-java/Makefile.am +++ b/liblttng-ust-java/Makefile.am @@ -3,19 +3,20 @@ if BUILD_JNI_INTERFACE AM_CPPFLAGS = -I$(top_srcdir)/include lib_LTLIBRARIES = liblttng-ust-java.la -liblttng_ust_java_la_SOURCES = LTTNG_UST.c LTTNG_UST.h lttng_ust_java.h -dist_noinst_DATA = LTTNG_UST.java +liblttng_ust_java_la_SOURCES = LTTngUst.c org_lttng_ust_LTTngUst.h lttng_ust_java.h +dist_noinst_DATA = LTTngUst.java liblttng_ust_java_la_LIBADD = -lc -L$(top_builddir)/liblttng-ust/.libs -llttng-ust -all: LTTNG_UST.class LTTNG_UST.h +all: LTTngUst.class org_lttng_ust_LTTngUst.h clean-local: - rm -rf LTTNG_UST.h LTTNG_UST.class + rm org_lttng_ust_LTTngUst.h + rm -rf org/ -LTTNG_UST.class: LTTNG_UST.java - javac -d "$(builddir)" "$(srcdir)/LTTNG_UST.java" +LTTngUst.class: LTTngUst.java + javac -d "$(builddir)" "$(srcdir)/LTTngUst.java" -LTTNG_UST.h: LTTNG_UST.class - javah -classpath ./ -jni LTTNG_UST +org_lttng_ust_LTTngUst.h: LTTngUst.class + javah org.lttng.ust.LTTngUst endif -- 2.34.1