(Hopefully) Merge of the patches.
[lttv.git] / ltt / jni_interface.c
index e2306ff2f0a895f0705efbd18472537e0c5f0d47..96dc20497b699b6bf30c3f159eee1f26eb026673 100644 (file)
@@ -2,21 +2,17 @@
 // !! 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
+#include <jni.h>
 
+#include <ltt/trace.h>
+#include <ltt/time.h>
+#include <ltt/marker.h>
+#include <glib.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdint.h>
 
 // *** FIXME ***
 // *** HACK ***
 #define BILLION 1000000000
 
 
-#include <jni.h>
-
-#include <ltt/trace.h>
-#include <ltt/time.h>
-#include <ltt/marker.h>
-#include <glib.h>
-
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
+#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
@@ -58,15 +56,23 @@ struct addMarkersArgs
     struct marker_data* mdata;
 };
 
-
 // ### 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)
 {
-    printf( (*env)->GetStringUTFChars(env, new_string, 0) );
+        const char* c_msg = (*env)->GetStringUTFChars(env, new_string, 0);
+        
+        printf("%s", c_msg );
+        
+        (*env)->ReleaseStringUTFChars(env, new_string, c_msg);
 }
-
 // #
 // ####
 
@@ -75,7 +81,14 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_Jni_1C_1Common_ltt_
 // ### 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) {
+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 );
         
@@ -226,7 +239,7 @@ 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) {
+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 };
@@ -234,8 +247,27 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAl
         g_datalist_foreach(&newPtr->tracefiles, &g_datalist_foreach_addTracefilesOfTrace, &args);
 }
 
+// Obtain the range of the trace (i.e. "start time" and "end time")
+// 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);
+        
+        LttTime tmpStartTime = { 0, 0 };
+        LttTime tmpEndTime = { 0, 0 };
+        ltt_trace_time_span_get(newPtr, &tmpStartTime, &tmpEndTime);
+        
+        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 tracefile
+// 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);
@@ -249,16 +281,16 @@ 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");
 }
 // #
@@ -269,6 +301,7 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1print
 
 // ### 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);
@@ -437,11 +470,11 @@ JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1
         return CONVERT_PTR_TO_JLONG(&newPtr->buffer);
 }
 
-// Get of buf_size
+// 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;
 }
 
 
@@ -463,7 +496,7 @@ void g_hash_table_foreach_addMarkersOfTracefile(gpointer key, gpointer data, gpo
 }
 
 // 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) {
+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 ***
@@ -485,9 +518,9 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1p
         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,13 +530,12 @@ 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");
 }
 // #
@@ -529,27 +561,9 @@ JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1posit
         //  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;
-        
-        int returnedValue = ltt_tracefile_read(tracefilePtr);
-        
-        // 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);
-        }
+        // 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;
 }
@@ -574,7 +588,7 @@ JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1readN
         
         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);
         }
@@ -654,7 +668,14 @@ JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEv
         return (jint)newPtr->event_id;
 }
 
-// Get of event_time
+// 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);
         
@@ -707,20 +728,20 @@ JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getO
 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 );
+        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");
 }
 // #
@@ -828,17 +849,17 @@ JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1get
 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");
 }
 
@@ -910,14 +931,14 @@ JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_l
 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("offset        : %lu\n" ,(long unsigned int)newPtr->offset );
+        printf("size          : %lu\n" ,(long unsigned int)newPtr->size );
+        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");
 }
 
@@ -947,83 +968,72 @@ JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getP
         // 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 ( (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
                         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 + newMarkerFieldPtr->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;
         }
         
This page took 0.032658 seconds and 4 git commands to generate.