X-Git-Url: http://git.liburcu.org/?a=blobdiff_plain;f=ltt%2Fjni_interface.c;h=52c9993c5e035f3319a838d858e7f2cab2c8ac6e;hb=e40cdd19296a4fbacf0738fb3671f6d0503d9e99;hp=e2306ff2f0a895f0705efbd18472537e0c5f0d47;hpb=f22ebb303badb8ef81066418b9b4324c4e964250;p=lttv.git diff --git a/ltt/jni_interface.c b/ltt/jni_interface.c index e2306ff2..52c9993c 100644 --- a/ltt/jni_interface.c +++ b/ltt/jni_interface.c @@ -1,37 +1,24 @@ - -// !! Important to get consistent size_t type +/* This file is part of the Linux Trace Toolkit viewer + * Copyright (C) 2010 William Bourque + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License Version 2.1 as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +/* Important to get consistent size_t type */ #define _FILE_OFFSET_BITS 64 -// Set to 1 to use "int32" instead of "long64" to store pointer to java -#define ARCHITECTURE_IS_64BITS 0 - -#if ARCHITECTURE_IS_64BITS == 0 -// Conversion to int first to save warning -#define CONVERT_JLONG_TO_PTR(p) (int)(p) -#define CONVERT_PTR_TO_JLONG(p) (jlong)(int)(p) -// Define the "gint" type we should use for pointer. -#define GINT_TYPE_FOR_PTR gint64 -#else -#define CONVERT_JLONG_TO_PTR(p) (p) -// Define the "gint" type we should use for pointer. -#define GINT_TYPE_FOR_PTR gint32 -#endif - - -// *** FIXME *** -// *** HACK *** -// We've got hell of a problem passing "unsigned int64" to java, as there is no equivalent type -// The closer we can use is "long" which is signed, so only 32 (or 63?) bits are valid -// Plus, even if we are within the "32 bits" capacity, java sometime screw itself trying to convert "unsigned 64 -> signed 64" -// This happen especially often when RETURNING a jlong -// So when returning a jlong, we should convert it like this : "unsigned 64"->"signed 64"->jlong -#define CONVERT_UINT64_TO_JLONG(n) (jlong)(gint64)(n) -#define CONVERT_INT64_TO_JLONG(n) (jlong)(gint64)(n) - -// To ease calcul involving nano -#define BILLION 1000000000 - - #include #include @@ -42,145 +29,248 @@ #include #include #include +#include +#include +/* +***FIXME*** +***HACK*** + We've got hell of a problem passing "unsigned int64" to java, as there is no equivalent type + The closer we can use is "long" which is signed, so only 32 (or 63?) bits are valid + Plus, even if we are within the "32 bits" capacity, java sometime screw itself trying to convert "unsigned 64 -> signed 64" + This happen especially often when RETURNING a jlong + So when returning a jlong, we should convert it like this : "unsigned 64"->"signed 64"->jlong +*/ +#define CONVERT_UINT64_TO_JLONG(n) (jlong)(gint64)(n) +#define CONVERT_INT64_TO_JLONG(n) (jlong)(gint64)(n) + +/* To ease calcul involving nano */ +#define BILLION 1000000000 + -// Structure to encapsulate java_data to pass as arguments +#if __WORDSIZE == 64 + #define CONVERT_JLONG_TO_PTR(p) (p) + #define CONVERT_PTR_TO_JLONG(p) (jlong)(p) + /* Define the "gint" type we should use for pointer. */ + #define GINT_TYPE_FOR_PTR gint64 +#else + /* Conversion to int first to save warning */ + #define CONVERT_JLONG_TO_PTR(p) (int)(p) + #define CONVERT_PTR_TO_JLONG(p) (jlong)(int)(p) + /* Define the "gint" type we should use for pointer. */ + #define GINT_TYPE_FOR_PTR gint32 +#endif + +/* Structure to encapsulate java_data to pass as arguments */ struct java_calling_data { - JNIEnv* env; + JNIEnv *env; jobject jobj; }; -// *** TODO ** -// Find a better way! This is ugly! +/* ***TODO*** + All these struct are used to call g_datalist_foreach() + Find a better way! This is ugly! +*/ struct addMarkersArgs { - struct java_calling_data* java_args; - struct marker_data* mdata; + struct java_calling_data *java_args; + struct marker_data *mdata; }; +struct saveTimeArgs +{ + GArray *saveTimeArray; +}; -// ### COMMON Methods ### -// # -// JNI method to call printf from the java side -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_Jni_1C_1Common_ltt_1printC(JNIEnv* env, jobject jobj, jstring new_string) +struct saveTimeAndTracefile { - printf( (*env)->GetStringUTFChars(env, new_string, 0) ); + LttTime time; + LttTracefile *tracefile; +}; + +/* +### COMMON Methods ### +# +Empty method to turn off the debug (debug waste time while printing) */ +void ignore_and_drop_message(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) { +} + + +/* JNI method to call printf from the java side */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_Jni_1C_1Common_ltt_1printC(JNIEnv *env, jobject jobj, jstring new_string) { + const char *c_msg = (*env)->GetStringUTFChars(env, new_string, 0); + + printf("%s", c_msg ); + + (*env)->ReleaseStringUTFChars(env, new_string, c_msg); } -// # -// #### +/* Method to obtain a trace version number from its path */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_factory_JniTraceVersion_ltt_1getTraceVersion(JNIEnv *env, jobject jobj, jstring tracepath) { + const gchar *c_pathname = (*env)->GetStringUTFChars(env, tracepath, 0); + jint tmpMajorNumber = 0; + jint tmpMinorNumber = 0; + jclass accessClass = (*env)->GetObjectClass(env, jobj); + jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTraceVersionFromC", "(II)V"); + + struct LttTraceVersion version_number; + + if ( ltt_get_trace_version(c_pathname, &version_number) >= 0) { + tmpMajorNumber = version_number.ltt_major_version; + tmpMinorNumber = version_number.ltt_minor_version; + } + + (*env)->CallVoidMethod(env, jobj, accessFunction, tmpMajorNumber, tmpMinorNumber ); +} +/* +# +#### */ -// ### TRACE methods ### -// # -// JNI mapping of < LttTrace *ltt_trace_open(const gchar *pathname) > (trace.h) -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1openTrace(JNIEnv* env, jobject jobj, jstring pathname) { - const char* c_pathname = (*env)->GetStringUTFChars(env, pathname, 0); - LttTrace* newPtr = ltt_trace_open( c_pathname ); + +/* +### TRACE methods ### +# +JNI mapping of < LttTrace *ltt_trace_open(const gchar *pathname) > (trace.h) */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1openTrace(JNIEnv *env, jobject jobj, jstring pathname, jboolean show_debug) { + + if ( !show_debug) { + /* Make sure we don't use any debug (speed up the read) */ + g_log_set_handler(NULL, G_LOG_LEVEL_INFO, ignore_and_drop_message, NULL); + g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, ignore_and_drop_message, NULL); + } + + const char *c_pathname = (*env)->GetStringUTFChars(env, pathname, 0); + LttTrace *newPtr = ltt_trace_open(c_pathname); (*env)->ReleaseStringUTFChars(env, pathname, c_pathname); return CONVERT_PTR_TO_JLONG(newPtr); } -// JNI mapping of < void ltt_trace_close(LttTrace *t) > (trace.h) -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1closeTrace(JNIEnv* env, jobject jobj, jlong trace_ptr){ +/* JNI mapping of < LttTrace *ltt_trace_open_live(const gchar *pathname) > (trace.h) */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1openTraceLive(JNIEnv *env, jobject jobj, jstring pathname, jboolean show_debug) { + + if ( !show_debug) { + /* Make sure we don't use any debug (speed up the read) */ + g_log_set_handler(NULL, G_LOG_LEVEL_INFO, ignore_and_drop_message, NULL); + g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, ignore_and_drop_message, NULL); + } - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); + const char *c_pathname = (*env)->GetStringUTFChars(env, pathname, 0); + LttTrace *newPtr = ltt_trace_open_live(c_pathname); + + (*env)->ReleaseStringUTFChars(env, pathname, c_pathname); + + return CONVERT_PTR_TO_JLONG(newPtr); +} + +/* JNI mapping of < void ltt_trace_close(LttTrace *t) > (trace.h) */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1closeTrace(JNIEnv *env, jobject jobj, jlong trace_ptr){ + + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); ltt_trace_close(newPtr); } -// Get the tracepath -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getTracepath(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get the tracepath */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getTracepath(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (*env)->NewStringUTF(env, g_quark_to_string( newPtr->pathname) ); } -// Get of num_cpu -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getCpuNumber(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of num_cpu */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getCpuNumber(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jint)newPtr->num_cpu; } -// Get of arch_type -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchType(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of arch_type */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchType(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jlong)newPtr->arch_type; } -// Get of arch_variant -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchVariant(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of arch_variant */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchVariant(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jlong)newPtr->arch_variant; } -// Get of arch_size -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchSize(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of arch_size */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchSize(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jshort)newPtr->arch_size; } -// Get of ltt_major_version -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMajorVersion(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of ltt_major_version */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMajorVersion(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jshort)newPtr->ltt_major_version; } -// Get of ltt_minor_version -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMinorVersion(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of ltt_minor_version */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMinorVersion(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jshort)newPtr->ltt_minor_version; } -// Get of flight_recorder -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFlightRecorder(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of flight_recorder */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFlightRecorder(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jshort)newPtr->flight_recorder; } -// Get of freq_scale -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFreqScale(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of freq_scale */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFreqScale(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return (jlong)newPtr->freq_scale; } -// Get of start_freq -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartFreq(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of start_freq */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartFreq(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->start_freq); } -// Get of start_tsc -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartTimestampCurrentCounter(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of start_tsc */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartTimestampCurrentCounter(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->start_tsc); } -// Get of start_monotonic -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartMonotonic(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Get of start_monotonic */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartMonotonic(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->start_monotonic); } -// Access to start_time -// Note that we are calling the setTimeFromC function in Jaf_Time from here -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTime(JNIEnv* env, jobject jobj, jlong trace_ptr, jobject time_jobj) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* JNI mapping of < int ltt_trace_update(LttTrace *t) > (trace.h) */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1updateTrace(JNIEnv *env, jobject jobj, jlong trace_ptr){ + + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); + + return (jint)ltt_trace_update(newPtr); +} + +/* Access to start_time */ +/* Note that we are calling the setTimeFromC function in Jaf_Time from here */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTime(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject time_jobj) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); jclass accessClass = (*env)->GetObjectClass(env, time_jobj); jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V"); @@ -190,10 +280,10 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedS (*env)->CallVoidMethod(env, time_jobj, accessFunction, fullTime ); } -// Access to start_time_from_tsc -// Note that we are calling the setTimeFromC function in Jaf_Time from here -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTimeFromTimestampCurrentCounter(JNIEnv* env, jobject jobj, jlong trace_ptr, jobject time_jobj) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Access to start_time_from_tsc */ +/* Note that we are calling the setTimeFromC function in Jaf_Time from here */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTimeFromTimestampCurrentCounter(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject time_jobj) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); jclass accessClass = (*env)->GetObjectClass(env, time_jobj); jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V"); @@ -204,20 +294,20 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedS } -// g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAllTracefiles +/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAllTracefiles */ void g_datalist_foreach_addTracefilesOfTrace(GQuark name, gpointer data, gpointer user_data) { - struct java_calling_data* args = (struct java_calling_data*)user_data; + struct java_calling_data *args = (struct java_calling_data*)user_data; jclass accessClass = (*args->env)->GetObjectClass(args->env, args->jobj); jmethodID accessFunction = (*args->env)->GetMethodID(args->env, accessClass, "addTracefileFromC", "(Ljava/lang/String;J)V"); - GArray* group = (GArray*)data; - LttTracefile* tracefile; + GArray *tracefile_array = (GArray*)data; + LttTracefile *tracefile; jlong newPtr; unsigned int i; - for (i=0; ilen; i++) { - tracefile = &g_array_index(group, LttTracefile, i); + for (i=0; ilen; i++) { + tracefile = &g_array_index(tracefile_array, LttTracefile, i); newPtr = CONVERT_PTR_TO_JLONG(tracefile); @@ -225,9 +315,9 @@ void g_datalist_foreach_addTracefilesOfTrace(GQuark name, gpointer data, gpointe } } -// Function to fill up the java map with the event type found in tracefile (the name) -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAllTracefiles(JNIEnv* env, jobject jobj, jlong trace_ptr) { - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); +/* Function to fill up the java map with the event type found in tracefile (the name) */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedAllTracefiles(JNIEnv *env, jobject jobj, jlong trace_ptr) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); struct java_calling_data args = { env, jobj }; @@ -235,10 +325,83 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAl } -// Function to print the content of a tracefile -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1printTrace(JNIEnv* env, jobject jobj, jlong trace_ptr) { +/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedTracefileTimeRange */ +/* used to save the current timestamp for each tracefile */ +void g_datalist_foreach_saveTracefilesTime(GQuark name, gpointer data, gpointer user_data) { + struct saveTimeArgs *args = (struct saveTimeArgs*)user_data; - LttTrace* newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); + GArray *tracefile_array = (GArray*)data; + GArray *save_array = args->saveTimeArray; + + LttTracefile *tracefile; + struct saveTimeAndTracefile *savedData; + + unsigned int i; + for (i=0; ilen; i++) { + tracefile = &g_array_index(tracefile_array, LttTracefile, i); + + /* Allocate a new LttTime for each tracefile (so it won't change if the tracefile seek somewhere else) */ + savedData = (struct saveTimeAndTracefile*)malloc( sizeof(struct saveTimeAndTracefile) ); + savedData->time.tv_sec = tracefile->event.event_time.tv_sec; + savedData->time.tv_nsec = tracefile->event.event_time.tv_nsec; + savedData->tracefile = tracefile; + /* Append the saved data to the array */ + g_array_append_val(save_array, savedData); + } +} + + +/* Obtain the range of the trace (i.e. "start time" and "end time") */ +/* Note : This function, unlike ltt_trace_time_span_get, is assured to return all tracefiles to their correct position after operation */ +/* NOTE : this method is quite heavy to use!!! */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedTracefileTimeRange(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject jstart_time, jobject jend_time) { + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); + + /* Allocate ourself a new array to save the data in */ + GArray *savedDataArray = g_array_new(FALSE, FALSE, sizeof(struct saveTimeAndTracefile*) ); + struct saveTimeArgs args = { savedDataArray }; + /* Call g_datalist_foreach_saveTracefilesTime for each element in the GData to save the time */ + g_datalist_foreach(&newPtr->tracefiles, &g_datalist_foreach_saveTracefilesTime, &args); + + /* Call to ltt_trace_time_span_get to find the current start and end time */ + /* NOTE : This WILL change the current block of the tracefile (i.e. its timestamp) */ + LttTime tmpStartTime = { 0, 0 }; + LttTime tmpEndTime = { 0, 0 }; + ltt_trace_time_span_get(newPtr, &tmpStartTime, &tmpEndTime); + + /* Seek back to the correct time for each tracefile and free the allocated memory */ + struct saveTimeAndTracefile *savedData; + unsigned int i; + for (i=0; ilen; i++) { + savedData = g_array_index(savedDataArray, struct saveTimeAndTracefile*, i); + /* Seek back to the correct time */ + /* Some time will not be consistent here (i.e. unitialized data) */ + /* but the seek should work just fine with that */ + ltt_tracefile_seek_time(savedData->tracefile, savedData->time); + + /* Free the memory allocated for this saveTimeAndTracefile entry */ + free( savedData ); + } + /* Free the memory allocated for the GArray */ + g_array_free(savedDataArray, TRUE); + + /* Send the start and end time back to the java */ + /* We do it last to make sure a problem won't leave us with unfred memory */ + jclass startAccessClass = (*env)->GetObjectClass(env, jstart_time); + jmethodID startAccessFunction = (*env)->GetMethodID(env, startAccessClass, "setTimeFromC", "(J)V"); + jlong startTime = (CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_nsec); + (*env)->CallVoidMethod(env, jstart_time, startAccessFunction, startTime); + + jclass endAccessClass = (*env)->GetObjectClass(env, jend_time); + jmethodID endAccessFunction = (*env)->GetMethodID(env, endAccessClass, "setTimeFromC", "(J)V"); + jlong endTime = (CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_nsec); + (*env)->CallVoidMethod(env, jend_time, endAccessFunction, endTime); +} + +/* Function to print the content of a trace */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1printTrace(JNIEnv *env, jobject jobj, jlong trace_ptr) { + + LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr); printf("pathname : %s\n" ,g_quark_to_string(newPtr->pathname) ); printf("num_cpu : %u\n" ,(unsigned int)(newPtr->num_cpu) ); @@ -249,225 +412,228 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1print printf("ltt_minor_version : %u\n" ,(unsigned short)(newPtr->ltt_minor_version) ); printf("flight_recorder : %u\n" ,(unsigned short)(newPtr->flight_recorder) ); printf("freq_scale : %u\n" ,(unsigned int)(newPtr->freq_scale) ); - printf("start_freq : %u\n" ,(unsigned long)(newPtr->start_freq) ); - printf("start_tsc : %u\n" ,(unsigned long)(newPtr->start_tsc) ); - printf("start_monotonic : %u\n" ,(unsigned long)(newPtr->start_monotonic) ); - printf("start_time ptr : 0x%x\n" ,&newPtr->start_time); - printf(" tv_sec : %u\n" ,(unsigned long)(newPtr->start_time.tv_sec) ); - printf(" tv_nsec : %u\n" ,(unsigned long)(newPtr->start_time.tv_nsec) ); - printf("start_time_from_tsc ptr : 0x%x\n" ,&newPtr->start_time_from_tsc); - printf(" tv_sec : %u\n" ,(unsigned long)(newPtr->start_time_from_tsc.tv_sec) ); - printf(" tv_nsec : %u\n" ,(unsigned long)(newPtr->start_time_from_tsc.tv_nsec) ); - printf("tracefiles ptr : 0x%x\n" ,newPtr->tracefiles); + printf("start_freq : %lu\n" ,(long unsigned int)(newPtr->start_freq) ); + printf("start_tsc : %lu\n" ,(long unsigned int)(newPtr->start_tsc) ); + printf("start_monotonic : %lu\n" ,(long unsigned int)(newPtr->start_monotonic) ); + printf("start_time ptr : %p\n" ,&newPtr->start_time); + printf(" tv_sec : %lu\n" ,(long unsigned int)(newPtr->start_time.tv_sec) ); + printf(" tv_nsec : %lu\n" ,(long unsigned int)(newPtr->start_time.tv_nsec) ); + printf("start_time_from_tsc ptr : %p\n" ,&newPtr->start_time_from_tsc); + printf(" tv_sec : %lu\n" ,(long unsigned int)(newPtr->start_time_from_tsc.tv_sec) ); + printf(" tv_nsec : %lu\n" ,(long unsigned int)(newPtr->start_time_from_tsc.tv_nsec) ); + printf("tracefiles ptr : %p\n" ,newPtr->tracefiles); printf("\n"); } -// # -// ### +/* +# +### */ + +/* +### TRACEFILE methods ### +# */ -// ### TRACEFILE methods ### -// # -// Get of cpu_online -JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsCpuOnline(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of cpu_online */ +JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsCpuOnline(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jboolean)newPtr->cpu_online; } -// Get of long_name -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilepath(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of long_name */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilepath(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->long_name) ); } -// Get of name -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilename(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of name */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilename(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name) ); } -// Get of cpu_num -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCpuNumber(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of cpu_num */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCpuNumber(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->cpu_num; } -// Get of tid -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTid(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of tid */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTid(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->tid; } -// Get of pgid -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getPgid(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of pgid */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getPgid(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->pgid; } -// Get of creation -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCreation(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of creation */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCreation(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->creation); } -// Get of trace -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracePtr(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of trace */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracePtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_PTR_TO_JLONG(newPtr->trace); } -// Get of mdata -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getMarkerDataPtr(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of mdata */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getMarkerDataPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_PTR_TO_JLONG(newPtr->mdata); } -// Get of fd -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCFileDescriptor(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of fd */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCFileDescriptor(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jint)newPtr->fd; } -// Get of file_size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getFileSize(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of file_size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getFileSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->file_size); } -// Get of num_blocks -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBlockNumber(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of num_blocks */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBlockNumber(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->num_blocks; } -// Get of reverse_bo -JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsBytesOrderReversed(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of reverse_bo */ +JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsBytesOrderReversed(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jboolean)newPtr->reverse_bo; } -// Get of float_word_order -JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsFloatWordOrdered(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of float_word_order */ +JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsFloatWordOrdered(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jboolean)newPtr->float_word_order; } -// Get of alignment -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAlignement(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of alignment */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAlignement(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->alignment); } -// Get of buffer_header_size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferHeaderSize(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of buffer_header_size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferHeaderSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->buffer_header_size); } -// Get of tscbits -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfCurrentTimestampCounter(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of tscbits */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfCurrentTimestampCounter(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jint)newPtr->tscbits; } -// Get of eventbits -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfEvent(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of eventbits */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jint)newPtr->eventbits; } -// Get of tsc_mask -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMask(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of tsc_mask */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMask(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->tsc_mask); } -// Get of tsc_mask_next_bit -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMaskNextBit(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of tsc_mask_next_bit */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMaskNextBit(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->tsc_mask_next_bit); } -// Get of events_lost -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventsLost(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of events_lost */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventsLost(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->events_lost; } -// Get of subbuf_corrupt -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getSubBufferCorrupt(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of subbuf_corrupt */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getSubBufferCorrupt(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return (jlong)newPtr->subbuf_corrupt; } -// Get of event -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventPtr(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of event */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_PTR_TO_JLONG(&newPtr->event); } -// Get of buffer -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferPtr(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of buffer */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); return CONVERT_PTR_TO_JLONG(&newPtr->buffer); } -// Get of buf_size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferSize(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Get of buffer size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); - return (jlong)newPtr->buf_size; + return (jlong)newPtr->buffer.size; } -// g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAllMarkers +/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAllMarkers */ void g_hash_table_foreach_addMarkersOfTracefile(gpointer key, gpointer data, gpointer user_data) { - struct addMarkersArgs* args = (struct addMarkersArgs*)user_data; - struct java_calling_data* jargs = (struct java_calling_data*)args->java_args; + struct addMarkersArgs *args = (struct addMarkersArgs*)user_data; + struct java_calling_data *jargs = (struct java_calling_data*)args->java_args; jclass accessClass = (*jargs->env)->GetObjectClass(jargs->env, jargs->jobj); jmethodID accessFunction = (*jargs->env)->GetMethodID(jargs->env, accessClass, "addMarkersFromC", "(IJ)V"); unsigned long marker_id = (unsigned long)data; - // The hash table store an ID... we will use the ID to access the array. - GArray* marker = args->mdata->markers; - struct marker_info* newPtr = &g_array_index(marker, struct marker_info, marker_id); + /* The hash table store an ID... we will use the ID to access the array. */ + GArray *marker = args->mdata->markers; + struct marker_info *newPtr = &g_array_index(marker, struct marker_info, marker_id); (*jargs->env)->CallVoidMethod(jargs->env, jargs->jobj, accessFunction, marker_id, CONVERT_PTR_TO_JLONG(newPtr) ); } -// Function to fill up the java map with the event type found in tracefile (the name) -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAllMarkers(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Function to fill up the java map with the event type found in tracefile (the name) */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1feedAllMarkers(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); - // *** TODO *** - // Find a better way! This is ugly! + /* ***TODO*** + Find a better way! This is ugly! */ struct java_calling_data java_args = { env, jobj }; struct addMarkersArgs args = { &java_args, newPtr->mdata }; @@ -475,19 +641,19 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1g } -// Function to print the content of a tracefile -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1printTracefile(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { +/* Function to print the content of a tracefile */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1printTracefile(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); printf("cpu_online : %i\n" ,(int)newPtr->cpu_online); printf("long_name : %s\n" ,g_quark_to_string(newPtr->long_name)); printf("name : %s\n" ,g_quark_to_string(newPtr->name)); printf("cpu_num : %u\n" ,(unsigned int)(newPtr->cpu_num)); printf("tid : %u\n" ,(unsigned int)(newPtr->tid)); printf("pgid : %u\n" ,(unsigned int)(newPtr->pgid)); - printf("creation : %u\n" ,(unsigned long)(newPtr->creation)); - printf("trace ptr : 0x%x\n" ,newPtr->trace); - printf("marker ptr : 0x%x\n" ,newPtr->mdata); + printf("creation : %lu\n" ,(long unsigned int)(newPtr->creation)); + printf("trace ptr : %p\n" ,newPtr->trace); + printf("marker ptr : %p\n" ,newPtr->mdata); printf("fd : %i\n" ,(int)(newPtr->fd)); printf("file_size : %u\n" ,(unsigned int)(newPtr->file_size)); printf("num_blocks : %u\n" ,(unsigned int)(newPtr->num_blocks)); @@ -497,84 +663,70 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1p printf("buffer_header_size : %i\n" ,(int)newPtr->buffer_header_size); printf("tscbits : %u\n" ,(unsigned short)newPtr->tscbits); printf("eventbits : %u\n" ,(unsigned short)newPtr->eventbits); - printf("tsc_mask : %u\n" ,(unsigned long)newPtr->tsc_mask); - printf("tsc_mask_next_bit : %u\n" ,(unsigned long)newPtr->tsc_mask_next_bit); + printf("tsc_mask : %lu\n" ,(long unsigned int)newPtr->tsc_mask); + printf("tsc_mask_next_bit : %lu\n" ,(long unsigned int)newPtr->tsc_mask_next_bit); printf("events_lost : %u\n" ,(unsigned int)newPtr->events_lost); printf("subbuf_corrupt : %u\n" ,(unsigned int)newPtr->subbuf_corrupt); - printf("event ptr : 0x%x\n" ,&newPtr->event); - printf("buffer ptr : 0x%x\n" ,&newPtr->buffer); - printf("buf_size : %i\n" ,(unsigned int)newPtr->buf_size); + printf("event ptr : %p\n" ,&newPtr->event); + printf("buffer ptr : %p\n" ,&newPtr->buffer); printf("\n"); } -// # -// ### +/* +# +### */ -// ### EVENT methods ### -// # +/* +### EVENT methods ### +# */ -// Method to get the read status -// This method will read the next event and then seek back its initial position -// Lttv assume that every tracefile have at least 1 event, but we have not guarantee after this one. -// We will read the next event and return the status of that read -// We will then seek back to our initial position -// Note : this method is expensive and should not be used too often -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1positionToFirstEvent(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* tracefilePtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); - - // Ask ltt to read the next events on the given tracefiles - // Returned value can be : - // 0 if everything went fine (EOK) - // ERANGE = 34 out of range, back to last event (might be system dependent?) - // EPERM = 1 error while reading (might be system dependent?) - - // Get "first time" on the trace before moving, as we will seek back after the read - LttTime firstTime = ((struct LttTrace)*(tracefilePtr->trace)).start_time_from_tsc; - - // *** HACK *** - // For invalid events (i.e. empty tracefile) we have to save the "incoherent" timestamp that points BEFORE the first event - // Otherwise, we are already Out of Range when we seek back to the first event - // - // However, if we move to this timestamp for ALL events, we will get a lot of weird inconsistency with valid events - // Therefore, we will use two seek time : a "good" and valid one and a "before first event" one - LttTime beforeFirstTime = tracefilePtr->event.event_time; +/* Method to get the read status */ +/* This method will read the next event and then seek back its initial position */ +/* Lttv assume that every tracefile have at least 1 event, but we have not guarantee after this one. */ +/* We will read the next event and return the status of that read */ +/* We will then seek back to our initial position */ +/* Note : this method is expensive and should not be used too often */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1positionToFirstEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *tracefilePtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); - int returnedValue = ltt_tracefile_read(tracefilePtr); + /* Ask ltt to read the next events on the given tracefiles + Returned value can be : + 0 if everything went fine (EOK) + ERANGE = 34 out of range, back to last event (might be system dependent?) + EPERM = 1 error while reading (might be system dependent?) */ - // Read succeed, move to first events - if ( returnedValue == 0 ) { - ltt_tracefile_seek_time(tracefilePtr, firstTime); - } - // Read failed, get back to the "before" time - else { - ltt_tracefile_seek_time(tracefilePtr, beforeFirstTime); + if (tracefilePtr->trace == NULL) { + return (jint) EPERM; } + /* Seek to the start time... this will also read the first event, as we want. */ + int returnedValue = ltt_tracefile_seek_time(tracefilePtr, ((struct LttTrace)*(tracefilePtr->trace)).start_time_from_tsc); + return (jint)returnedValue; } -// Method to read next event -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1readNextEvent(JNIEnv* env, jobject jobj, jlong tracefile_ptr) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Method to read next event */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1readNextEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); + + /* Ask ltt to read the next events on the given tracefiles + Returned value can be : + 0 if everything went fine (EOK) + ERANGE = 34 out of range, back to last event (might be system dependent?) + EPERM = 1 error while reading (might be system dependent?) */ - // Ask ltt to read the next events on the given tracefiles - // Returned value can be : - // 0 if everything went fine (EOK) - // ERANGE = 34 out of range, back to last event (might be system dependent?) - // EPERM = 1 error while reading (might be system dependent?) + /* ***FIXME*** + This might fail on the FIRST event, as the timestamp before the first read is uninitialized + However, LTT make the assumption that all tracefile have AT LEAST one event, so we got to run with it */ - // *** FIXME *** - // This might fail on the FIRST event, as the timestamp before the first read is uninitialized - // However, LTT make the assumption that all tracefile have AT LEAST one event, so we got to run with it - // - // Save "last time" before moving, to be able to get back if needed + /* Save "last time" before moving, to be able to get back if needed */ LttTime lastTime = newPtr->event.event_time; int returnedValue = ltt_tracefile_read(newPtr); - // According to Ltt documentation, we need to get back to beginning after an error + /* We need to get back to previous after an error to keep a sane state */ if ( returnedValue != 0 ) { ltt_tracefile_seek_time(newPtr, lastTime); } @@ -582,9 +734,9 @@ JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1readN return (jint)returnedValue; } -// Method to seek to a certain event -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1seekEvent(JNIEnv* env, jobject jobj, jlong tracefile_ptr, jobject time_jobj) { - LttTracefile* newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); +/* Method to seek to a certain event */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1seekEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr, jobject time_jobj) { + LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr); guint64 fullTime = 0; @@ -592,71 +744,78 @@ JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1seekE jmethodID getTimeFunction = (*env)->GetMethodID(env, accessClass, "getTime", "()J"); fullTime = (*env)->CallLongMethod(env, time_jobj, getTimeFunction); - // *** HACK *** - // Conversion from jlong -> C long seems to be particularly sloppy - // Depending how and where (inlined a function or as a single operation) we do this, we might end up with wrong number - // The following asignation of guint64 seems to work well. - // MAKE SURE TO PERFORM SEVERAL TESTS IF YOU CHANGE THIS. + /* ***HACK*** + Conversion from jlong -> C long seems to be particularly sloppy + Depending how and where (inlined a function or as a single operation) we do this, we might end up with wrong number + The following asignation of guint64 seems to work well. + MAKE SURE TO PERFORM SEVERAL TESTS IF YOU CHANGE THIS. */ guint64 seconds = fullTime/BILLION; guint64 nanoSeconds = fullTime%BILLION; LttTime seekTime = { (unsigned long)seconds, (unsigned long)nanoSeconds }; - // Ask ltt to read the next events on the given tracefiles - // Returned value can be : - // 0 if everything went fine (EOK) - // ERANGE = 34 out of range, back to last event (might be system dependent?) - // EPERM = 1 error while reading (might be system dependent?) + /* Ask ltt to read the next events on the given tracefiles + Returned value can be : + 0 if everything went fine (EOK) + ERANGE = 34 out of range, back to last event (might be system dependent?) + EPERM = 1 error while reading (might be system dependent?) */ int returnedValue = ltt_tracefile_seek_time(newPtr, seekTime); return (jint)returnedValue; } -// Get of tracefile -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTracefilePtr(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of tracefile */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTracefilePtr(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return CONVERT_PTR_TO_JLONG(newPtr->tracefile); } -// Get of block -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getBlock(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of block */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getBlock(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jlong)newPtr->block; } -// Get of offset -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOffset(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of offset */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOffset(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jlong)newPtr->offset; } -// Get of tsc -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCurrentTimestampCounter(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of tsc */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCurrentTimestampCounter(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->tsc); } -// Get of timestamp -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTimestamp(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of timestamp */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTimestamp(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jlong)newPtr->timestamp; } -// Get of event_id -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventMarkerId(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of event_id */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventMarkerId(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jint)newPtr->event_id; } -// Get of event_time -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1feedEventTime(JNIEnv* env, jobject jobj, jlong event_ptr, jobject time_jobj) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get time in nanoseconds */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getNanosencondsTime(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); + + return (CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_nsec); +} + +/* Fill event_time into an object */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1feedEventTime(JNIEnv *env, jobject jobj, jlong event_ptr, jobject time_jobj) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); jclass accessClass = (*env)->GetObjectClass(env, time_jobj); jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V"); @@ -666,100 +825,102 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1feedE (*env)->CallVoidMethod(env, time_jobj, accessFunction, fullTime); } -// Access method to the data -// The data are in "byte" form -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getDataContent(JNIEnv* env, jobject jobj, jlong event_ptr, jlong data_size, jbyteArray dataArray) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Access method to the data */ +/* The data are in "byte" form */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getDataContent(JNIEnv *env, jobject jobj, jlong event_ptr, jlong data_size, jbyteArray dataArray) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); (*env)->SetByteArrayRegion(env, dataArray, 0, (jsize)data_size, newPtr->data); } -// Get of data_size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventDataSize(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of data_size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventDataSize(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jlong)newPtr->data_size; } -// Get of event_size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventSize(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of event_size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventSize(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jlong)newPtr->event_size; } -// Get of count -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCount(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of count */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCount(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return (jint)newPtr->count; } -// Get of overflow_nsec -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOverflowNanoSeconds(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); +/* Get of overflow_nsec */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOverflowNanoSeconds(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->overflow_nsec); } -// Function to print the content of a event -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1printEvent(JNIEnv* env, jobject jobj, jlong event_ptr) { - LttEvent* newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); - - printf("tracefile : 0x%x\n",(void*)newPtr->tracefile ); - printf("block : %u\n", (unsigned int)newPtr->block ); - printf("offset : %u\n", (unsigned int)newPtr->offset ); - printf("tsc : %u\n", (unsigned long)newPtr->tsc ); - printf("timestamp : %u\n", (unsigned int)newPtr->timestamp ); - printf("event_id : %u\n", (unsigned short)newPtr->event_id ); - printf("event_time : 0x%x\n",(void*) &newPtr->event_time ); - printf(" sec : %u\n", (unsigned long)(newPtr->event_time.tv_sec) ); - printf(" nsec : %u\n", (unsigned long)(newPtr->event_time.tv_nsec) ); - printf("data : 0x%x\n",(void*) newPtr->data ); - printf("data_size : %u\n", (unsigned int)newPtr->data_size ); - printf("event_size : %u\n", (unsigned int)newPtr->event_size ); - printf("count : %d\n", (int)newPtr->count ); - printf("overflow_nsec : %d\n", (long)newPtr->overflow_nsec ); +/* Function to print the content of a event */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1printEvent(JNIEnv *env, jobject jobj, jlong event_ptr) { + LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr); + + printf("tracefile : %p\n" ,(void*)newPtr->tracefile ); + printf("block : %u\n" ,(unsigned int)newPtr->block ); + printf("offset : %u\n" ,(unsigned int)newPtr->offset ); + printf("tsc : %lu\n" ,(long unsigned int)newPtr->tsc ); + printf("timestamp : %u\n" ,(unsigned int)newPtr->timestamp ); + printf("event_id : %u\n" ,(unsigned short)newPtr->event_id ); + printf("event_time : %p\n" ,(void*) &newPtr->event_time ); + printf(" sec : %lu\n" ,(long unsigned int)(newPtr->event_time.tv_sec) ); + printf(" nsec : %lu\n" ,(long unsigned int)(newPtr->event_time.tv_nsec) ); + printf("data : %p\n" ,(void*) newPtr->data ); + printf("data_size : %u\n" ,(unsigned int)newPtr->data_size ); + printf("event_size : %u\n" ,(unsigned int)newPtr->event_size ); + printf("count : %d\n" ,(int)newPtr->count ); + printf("overflow_nsec : %ld\n" ,(long)newPtr->overflow_nsec ); printf("\n"); } -// # -// ### +/* +# +### */ -// ### MARKER method ### -// # +/* +### MARKER method ### +# */ -// Get of name -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getName(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of name */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getName(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name)); } -// Get of format -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getFormatOverview(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of format */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getFormatOverview(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (*env)->NewStringUTF(env, newPtr->format); } -// Get of size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of size */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jlong)newPtr->size; } -// Method to get all markerField pointers -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAllMarkerFields(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Method to get all markerField pointers */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAllMarkerFields(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); jclass accessClass = (*env)->GetObjectClass(env, jobj); jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "addMarkerFieldFromC", "(Ljava/lang/String;J)V"); - GArray* field_array = (GArray*)newPtr->fields; - struct marker_field* field; + GArray *field_array = (GArray*)newPtr->fields; + struct marker_field *field; jlong marker_field_ptr; unsigned int i; @@ -774,260 +935,237 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getA -// Get of largest_align -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLargestAlign(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of largest_align */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLargestAlign(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->largest_align; } -// Get of int_size -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getIntSize(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of int_size */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getIntSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->int_size; } -// Get of long_size -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLongSize(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of long_size */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLongSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->long_size; } -// Get of pointer_size -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getPointerSize(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of pointer_size */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getPointerSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->pointer_size; } -// Get of size_t_size -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize_1tSize(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of size_t_size */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize_1tSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->size_t_size; } -// Get of alignment -JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAlignement(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of alignment */ +JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAlignement(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return (jshort)newPtr->alignment; } -// Get of next -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getNextMarkerPtr(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Get of next */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getNextMarkerPtr(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); return CONVERT_PTR_TO_JLONG(newPtr->next); } -// Function to print the content of a marker -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1printMarker(JNIEnv* env, jobject jobj, jlong marker_info_ptr) { - struct marker_info* newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); +/* Function to print the content of a marker */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1printMarker(JNIEnv *env, jobject jobj, jlong marker_info_ptr) { + struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr); - printf("name : %s\n", g_quark_to_string(newPtr->name) ); - printf("format : %s\n", newPtr->format ); - printf("size : %i\n", (long)newPtr->size ); - printf("largest_align : %u\n", (unsigned short)newPtr->largest_align ); - printf("fields : 0x%x\n",newPtr->fields ); - printf("int_size : %u\n", (unsigned short)newPtr->int_size ); - printf("long_size : %u\n", (unsigned short)newPtr->long_size ); - printf("pointer_size : %u\n", (unsigned short)newPtr->pointer_size ); - printf("size_t_size : %u\n", (unsigned short)newPtr->size_t_size ); - printf("alignment : %u\n", (unsigned short)newPtr->alignment ); - printf("next : 0x%x\n",newPtr->next ); + printf("name : %s\n" ,g_quark_to_string(newPtr->name) ); + printf("format : %s\n" ,newPtr->format ); + printf("size : %li\n" ,(long int)newPtr->size ); + printf("largest_align : %u\n" ,(unsigned short)newPtr->largest_align ); + printf("fields : %p\n" ,newPtr->fields ); + printf("int_size : %u\n" ,(unsigned short)newPtr->int_size ); + printf("long_size : %u\n" ,(unsigned short)newPtr->long_size ); + printf("pointer_size : %u\n" ,(unsigned short)newPtr->pointer_size ); + printf("size_t_size : %u\n" ,(unsigned short)newPtr->size_t_size ); + printf("alignment : %u\n" ,(unsigned short)newPtr->alignment ); + printf("next : %p\n" ,newPtr->next ); printf("\n"); } - -// # -// ### +/* +# +### */ -// ### MARKERFIELD Method -// # +/* +### MARKERFIELD Method +# */ -// Get of name -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getField(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of name */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getField(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name)); } -// Get of type -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getType(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of type */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getType(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return (jint)newPtr->type; } -// Get of offset -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getOffset(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); - - return CONVERT_UINT64_TO_JLONG(newPtr->offset); -} - -// Get of size -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getSize(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); - - return CONVERT_UINT64_TO_JLONG(newPtr->size); -} - -// Get of alignment -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAlignment(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of alignment */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAlignment(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->alignment); } -// Get of attributes -JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAttributes(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of attributes */ +JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAttributes(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return CONVERT_UINT64_TO_JLONG(newPtr->attributes); } -// Get of static_offset -JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getStatic_1offset(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of static_offset */ +JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getStatic_1offset(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return (jint)newPtr->static_offset; } -// Get of fmt -JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getFormat(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Get of fmt */ +JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getFormat(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); return (*env)->NewStringUTF(env, newPtr->fmt->str); } -// Function to print the content of a marker_field -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1printMarkerField(JNIEnv* env, jobject jobj, jlong marker_field_ptr) { - struct marker_field* newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); +/* Function to print the content of a marker_field */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1printMarkerField(JNIEnv *env, jobject jobj, jlong marker_field_ptr) { + struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); - printf("name : %s\n", g_quark_to_string(newPtr->name) ); - printf("type : %i\n", (int)newPtr->type ); - printf("offset : %u\n", (unsigned long)newPtr->offset ); - printf("size : %u\n", (unsigned long)newPtr->size ); - printf("alignment : %u\n", (unsigned long)newPtr->alignment ); - printf("attributes : %u\n", (unsigned long)newPtr->attributes ); - printf("static_offset : %i\n", (int)newPtr->static_offset ); - printf("fmt : %s\n", newPtr->fmt ); + printf("name : %s\n" ,g_quark_to_string(newPtr->name) ); + printf("type : %i\n" ,(int)newPtr->type ); + printf("alignment : %lu\n" ,(long unsigned int)newPtr->alignment ); + printf("attributes : %lu\n" ,(long unsigned int)newPtr->attributes ); + printf("static_offset : %i\n" ,(int)newPtr->static_offset ); + printf("fmt : %s\n" ,newPtr->fmt->str ); printf("\n"); } - -// # -// ### +/* +# +### */ -// ### PARSER Method -// # +/* +### PARSER Method +# */ -// This function will do the actual parsing -// It will then call java to assign the parsed data to the object "javaObj" -JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData(JNIEnv* env, jclass accessClass, jobject javaObj, jlong event_ptr, jlong marker_field_ptr) { +/* This function will do the actual parsing */ +/* It will then call java to assign the parsed data to the object "javaObj" */ +JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData(JNIEnv *env, jclass accessClass, jobject javaObj, jlong event_ptr, jlong marker_field_ptr) { LttEvent newEventPtr = *(LttEvent*)(CONVERT_JLONG_TO_PTR(event_ptr)); - struct marker_field* newMarkerFieldPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); + struct marker_field *newMarkerFieldPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr); + struct LttField *newLttFieldPtr = ltt_event_field(&newEventPtr, marker_field_get_index(newMarkerFieldPtr)); jmethodID accessFunction = NULL; - // There is a very limited number of type in LTT - // We will switch on the type for this field and act accordingly - // NOTE : We will save all integer into "long" type, as there is no signed/unsigned in java + /* + There is a very limited number of type in LTT + We will switch on the type for this field and act accordingly + NOTE : We will save all integer into "long" type, as there is no signed/unsigned in java */ - // *** HACK *** - // It seems the marker_field->type is absolutely not consistent, especially about pointer! - // Sometime pointer are saved in String, sometime as Int, sometime as pointer... - // We will do an extra check on type "LTT_TYPE_UNSIGNED_INT" to check if the marker_field->format is hint of a pointer + /* ***HACK*** + It seems the marker_field->type is absolutely not consistent, especially about pointer! + Sometime pointer are saved in String, sometime as Int, sometime as pointer... + We will do an extra check on type "LTT_TYPE_UNSIGNED_INT" to check if the marker_field->format is hint of a pointer */ switch ( newMarkerFieldPtr->type ) { case LTT_TYPE_SIGNED_INT : - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;J)V"); (*env)->CallStaticVoidMethod( env, accessClass, accessFunction, javaObj, - (*env)->NewStringUTF(env, g_quark_to_string(newMarkerFieldPtr->name) ), - ltt_event_get_long_int(&newEventPtr, newMarkerFieldPtr), - (*env)->NewStringUTF(env, newMarkerFieldPtr->fmt->str ) + ltt_event_get_long_int(&newEventPtr, newMarkerFieldPtr) ); break; case LTT_TYPE_UNSIGNED_INT : - - // If the format seems to be a pointer, add it as a pointer + /* If the format seems to be a pointer, add it as a pointer */ if ( (strncmp(newMarkerFieldPtr->fmt->str, "0x%llX", newMarkerFieldPtr->fmt->len) == 0 ) || (strncmp(newMarkerFieldPtr->fmt->str, "%llX", newMarkerFieldPtr->fmt->len) == 0 ) ) { - #if ARCHITECTURE_IS_64BITS == 0 - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + #if __WORDSIZE == 64 + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;J)V"); #else - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;J)V"); #endif (*env)->CallStaticVoidMethod( env, accessClass, accessFunction, javaObj, - (*env)->NewStringUTF(env, g_quark_to_string(newMarkerFieldPtr->name) ), - CONVERT_PTR_TO_JLONG(ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr) ), - (*env)->NewStringUTF(env, newMarkerFieldPtr->fmt->str ) + CONVERT_PTR_TO_JLONG(ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr) ) ); } - // Otherwise, add it as a number + /* Otherwise, add it as a number */ else { - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;J)V"); (*env)->CallStaticVoidMethod( env, accessClass, accessFunction, javaObj, - (*env)->NewStringUTF(env, g_quark_to_string(newMarkerFieldPtr->name) ), - ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr), - (*env)->NewStringUTF(env, newMarkerFieldPtr->fmt->str ) + ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr) ); } break; case LTT_TYPE_POINTER : - #if ARCHITECTURE_IS_64BITS == 0 - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + #if __WORDSIZE == 64 + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;J)V"); #else - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;J)V"); + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;J)V"); #endif (*env)->CallStaticVoidMethod( env, accessClass, accessFunction, javaObj, - (*env)->NewStringUTF(env, g_quark_to_string(newMarkerFieldPtr->name) ), - CONVERT_PTR_TO_JLONG(*(GINT_TYPE_FOR_PTR*)(newEventPtr.data + newMarkerFieldPtr->offset)), - (*env)->NewStringUTF(env, newMarkerFieldPtr->fmt->str ) + CONVERT_PTR_TO_JLONG(*(GINT_TYPE_FOR_PTR*)(newEventPtr.data + newLttFieldPtr->offset)) ); break; case LTT_TYPE_STRING : - accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addStringToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V"); + accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addStringToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;)V"); (*env)->CallStaticVoidMethod( env, accessClass, accessFunction, javaObj, - (*env)->NewStringUTF(env, g_quark_to_string(newMarkerFieldPtr->name) ), - (*env)->NewStringUTF(env, ltt_event_get_string(&newEventPtr, newMarkerFieldPtr) ), - (*env)->NewStringUTF(env, newMarkerFieldPtr->fmt->str ) + (*env)->NewStringUTF(env, ltt_event_get_string(&newEventPtr, newMarkerFieldPtr) ) ); break; case LTT_TYPE_COMPACT : case LTT_TYPE_NONE : default : - printf("Warning : Unrecognized format type! Skipping! (Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1fillParseArray)"); + printf("Warning : Unrecognized format type! Skipping! (Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData)"); break; } } - -// # -// ### +/* +# +### */