[lttng-dev] [lttng-ust PATCH 1/2] Add Integer and Long tracepoint types to the Java interface

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Tue May 22 12:35:35 EDT 2012


* Alexandre Montplaisir (alexandre.montplaisir at polymtl.ca) wrote:
> Also added Javadoc comments to the .java file.

merged, thanks!

Mathieu

> 
> Signed-off-by: Alexandre Montplaisir <alexandre.montplaisir at polymtl.ca>
> ---
>  liblttng-ust-java/LTTngUst.c       |   38 ++++++++++++++++----
>  liblttng-ust-java/LTTngUst.java    |   67 ++++++++++++++++++++++++++++++++----
>  liblttng-ust-java/lttng_ust_java.h |   22 ++++++++++--
>  3 files changed, 112 insertions(+), 15 deletions(-)
> 
> diff --git a/liblttng-ust-java/LTTngUst.c b/liblttng-ust-java/LTTngUst.c
> index 3d23d6a..0bef89d 100644
> --- a/liblttng-ust-java/LTTngUst.c
> +++ b/liblttng-ust-java/LTTngUst.c
> @@ -22,18 +22,44 @@
>  #define TRACEPOINT_CREATE_PROBES
>  #include "lttng_ust_java.h"
>  
> +JNIEXPORT void JNICALL Java_org_lttng_ust_LTTngUst_tracepointInt(JNIEnv *env,
> +						jobject jobj,
> +						jstring ev_name,
> +						jint payload)
> +{
> +	jboolean iscopy;
> +	const char *ev_name_cstr = (*env)->GetStringUTFChars(env, ev_name, &iscopy);
> +
> +	tracepoint(lttng_ust_java, int_event, ev_name_cstr, payload);
> +
> +	(*env)->ReleaseStringUTFChars(env, ev_name, ev_name_cstr);
> +}
> +
> +JNIEXPORT void JNICALL Java_org_lttng_ust_LTTngUst_tracepointLong(JNIEnv *env,
> +						jobject jobj,
> +						jstring ev_name,
> +						jlong payload)
> +{
> +	jboolean iscopy;
> +	const char *ev_name_cstr = (*env)->GetStringUTFChars(env, ev_name, &iscopy);
> +
> +	tracepoint(lttng_ust_java, long_event, ev_name_cstr, payload);
> +
> +	(*env)->ReleaseStringUTFChars(env, ev_name, ev_name_cstr);
> +}
> +
>  JNIEXPORT void JNICALL Java_org_lttng_ust_LTTngUst_tracepointString(JNIEnv *env,
>  						jobject jobj,
>  						jstring ev_name,
> -						jstring args)
> +						jstring payload)
>  {
>  	jboolean iscopy;
> -	const char *ev_name_cstr = (*env)->GetStringUTFChars(env, ev_name,
> -							&iscopy);
> -	const char *args_cstr = (*env)->GetStringUTFChars(env, args, &iscopy);
> +	const char *ev_name_cstr = (*env)->GetStringUTFChars(env, ev_name, &iscopy);
> +	const char *payload_cstr = (*env)->GetStringUTFChars(env, payload, &iscopy);
>  
> -	tracepoint(lttng_ust_java, string, ev_name_cstr, args_cstr);
> +	tracepoint(lttng_ust_java, string_event, ev_name_cstr, payload_cstr);
>  
>  	(*env)->ReleaseStringUTFChars(env, ev_name, ev_name_cstr);
> -	(*env)->ReleaseStringUTFChars(env, args, args_cstr);
> +	(*env)->ReleaseStringUTFChars(env, payload, payload_cstr);
>  }
> +
> diff --git a/liblttng-ust-java/LTTngUst.java b/liblttng-ust-java/LTTngUst.java
> index 68ed120..f4bea32 100644
> --- a/liblttng-ust-java/LTTngUst.java
> +++ b/liblttng-ust-java/LTTngUst.java
> @@ -1,5 +1,6 @@
> -/*
> +/**
>   * Copyright (C) 2011-2012 Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> + * Copyright (C) 2012 Alexandre Montplaisir <alexandre.montplaisir at polymtl.ca>
>   *
>   * This library is free software; you can redistribute it and/or
>   * modify it under the terms of the GNU Lesser General Public
> @@ -18,10 +19,64 @@
>  
>  package org.lttng.ust;
>  
> -public class LTTngUst {
> -	public static native void tracepointString(String name, String arg);
> -	static {
> -		System.loadLibrary("lttng-ust-java");
> -	}
> +/**
> + * This class implements the the Java side of the LTTng-UST Java interface.
> + *
> + * First, make sure you have installed "liblttng-ust-java.so" where the linker
> + * can find it. You can then call LTTngUst.init() from your Java program to
> + * connect the methods exposed here to the native library.
> + *
> + * Because of limitations in the probe declaration, all trace events generated
> + * by this library will have "lttng_ust_java" for domain, and "<type>_event" for
> + * event name in the CTF trace files. The "name" parameter will instead appear
> + * as the first element of the event's payload.
> + *
> + * @author Mathieu Desnoyers
> + * @author Alexandre Montplaisir
> + *
> + */
> +public abstract class LTTngUst {
> +
> +    /**
> +     * Initialize the UST tracer. This should always be called first, before any
> +     * tracepoint* method.
> +     */
> +    public static void init() {
> +        System.loadLibrary("lttng-ust-java"); //$NON-NLS-1$
> +    }
> +
> +    /**
> +     * Insert a tracepoint with a payload of type Integer.
> +     *
> +     * @param name
> +     *            The name assigned to this event. For best performance, this
> +     *            should be a statically-defined String, or a literal.
> +     * @param payload
> +     *            The int payload
> +     */
> +    public static native void tracepointInt(String name, int payload);
> +
> +    /**
> +     * Insert a tracepoint with a payload of type Long
> +     *
> +     * @param name
> +     *            The name assigned to this event. For best performance, this
> +     *            should be a statically-defined String, or a literal.
> +     * @param payload
> +     *            The long payload
> +     */
> +    public static native void tracepointLong(String name, long payload);
> +
> +    /**
> +     * Insert a tracepoint with a String payload.
> +     *
> +     * @param name
> +     *            The name assigned to this event. For best performance, this
> +     *            should be a statically-defined String, or a literal.
> +     * @param payload
> +     *            The String payload
> +     */
> +    public static native void tracepointString(String name, String payload);
> +
>  }
>  
> diff --git a/liblttng-ust-java/lttng_ust_java.h b/liblttng-ust-java/lttng_ust_java.h
> index 771d392..7cdbea5 100644
> --- a/liblttng-ust-java/lttng_ust_java.h
> +++ b/liblttng-ust-java/lttng_ust_java.h
> @@ -24,11 +24,27 @@
>  
>  #include <lttng/tracepoint.h>
>  
> -TRACEPOINT_EVENT(lttng_ust_java, string,
> -	TP_ARGS(const char *, name, const char *, args),
> +TRACEPOINT_EVENT(lttng_ust_java, int_event,
> +	TP_ARGS(const char *, name, int, payload),
>  	TP_FIELDS(
>  		ctf_string(name, name)
> -		ctf_string(args, args)
> +		ctf_integer(int, int_payload, payload)
> +	)
> +)
> +
> +TRACEPOINT_EVENT(lttng_ust_java, long_event,
> +	TP_ARGS(const char *, name, long, payload),
> +	TP_FIELDS(
> +		ctf_string(name, name)
> +		ctf_integer(long, long_payload, payload)
> +	)
> +)
> +
> +TRACEPOINT_EVENT(lttng_ust_java, string_event,
> +	TP_ARGS(const char *, name, const char *, payload),
> +	TP_FIELDS(
> +		ctf_string(name, name)
> +		ctf_string(string_payload, payload)
>  	)
>  )
>  
> -- 
> 1.7.10
> 
> 
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list