Rework about dialog by using gtk_show_about_dialog
[lttv.git] / ltt / jni_interface.c
CommitLineData
7f16dc89
WB
1/* This file is part of the Linux Trace Toolkit viewer
2 * Copyright (C) 2010 William Bourque
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License Version 2.1 as published by the Free Software Foundation.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the
15 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
16 * Boston, MA 02111-1307, USA.
17 */
f22ebb30 18
1202b93d 19/* Important to get consistent size_t type */
f22ebb30
WB
20#define _FILE_OFFSET_BITS 64
21
2b752eed 22#include <jni.h>
f22ebb30 23
2b752eed
WB
24#include <ltt/trace.h>
25#include <ltt/time.h>
26#include <ltt/marker.h>
27#include <glib.h>
28
29#include <stdlib.h>
30#include <stdio.h>
31#include <string.h>
32#include <stdint.h>
8b0a0cc8 33#include <errno.h>
1202b93d
WB
34/*
35***FIXME***
36***HACK***
37 We've got hell of a problem passing "unsigned int64" to java, as there is no equivalent type
38 The closer we can use is "long" which is signed, so only 32 (or 63?) bits are valid
39 Plus, even if we are within the "32 bits" capacity, java sometime screw itself trying to convert "unsigned 64 -> signed 64"
40 This happen especially often when RETURNING a jlong
41 So when returning a jlong, we should convert it like this : "unsigned 64"->"signed 64"->jlong
42*/
f22ebb30
WB
43#define CONVERT_UINT64_TO_JLONG(n) (jlong)(gint64)(n)
44#define CONVERT_INT64_TO_JLONG(n) (jlong)(gint64)(n)
45
1202b93d 46/* To ease calcul involving nano */
f22ebb30
WB
47#define BILLION 1000000000
48
49
2b752eed
WB
50#if __WORDSIZE == 64
51 #define CONVERT_JLONG_TO_PTR(p) (p)
20521615 52 #define CONVERT_PTR_TO_JLONG(p) (jlong)(p)
1202b93d 53 /* Define the "gint" type we should use for pointer. */
20521615 54 #define GINT_TYPE_FOR_PTR gint64
2b752eed 55#else
1202b93d 56 /* Conversion to int first to save warning */
2b752eed
WB
57 #define CONVERT_JLONG_TO_PTR(p) (int)(p)
58 #define CONVERT_PTR_TO_JLONG(p) (jlong)(int)(p)
1202b93d 59 /* Define the "gint" type we should use for pointer. */
20521615 60 #define GINT_TYPE_FOR_PTR gint32
2b752eed 61#endif
f22ebb30 62
1202b93d 63/* Structure to encapsulate java_data to pass as arguments */
f22ebb30
WB
64struct java_calling_data
65{
1202b93d 66 JNIEnv *env;
f22ebb30
WB
67 jobject jobj;
68};
69
1202b93d
WB
70/* ***TODO***
71 All these struct are used to call g_datalist_foreach()
72 Find a better way! This is ugly!
73*/
f22ebb30
WB
74struct addMarkersArgs
75{
1202b93d
WB
76 struct java_calling_data *java_args;
77 struct marker_data *mdata;
f22ebb30
WB
78};
79
472656e5
WB
80struct saveTimeArgs
81{
1202b93d 82 GArray *saveTimeArray;
472656e5
WB
83};
84
85struct saveTimeAndTracefile
86{
87 LttTime time;
1202b93d 88 LttTracefile *tracefile;
472656e5
WB
89};
90
1202b93d
WB
91/*
92### COMMON Methods ###
93#
94Empty method to turn off the debug (debug waste time while printing) */
95void ignore_and_drop_message(const gchar *log_domain, GLogLevelFlags log_level, const gchar *message, gpointer user_data) {
58907341
WB
96}
97
98
1202b93d
WB
99/* JNI method to call printf from the java side */
100JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_Jni_1C_1Common_ltt_1printC(JNIEnv *env, jobject jobj, jstring new_string) {
101 const char *c_msg = (*env)->GetStringUTFChars(env, new_string, 0);
58907341
WB
102
103 printf("%s", c_msg );
104
105 (*env)->ReleaseStringUTFChars(env, new_string, c_msg);
f22ebb30 106}
a31d2894 107
72984157 108/* Method to obtain a trace version number from its path */
a31d2894 109JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_factory_JniTraceVersion_ltt_1getTraceVersion(JNIEnv *env, jobject jobj, jstring tracepath) {
72984157 110
a31d2894
WB
111 const gchar *c_pathname = (*env)->GetStringUTFChars(env, tracepath, 0);
112 jint tmpMajorNumber = 0;
113 jint tmpMinorNumber = 0;
72984157 114
a31d2894
WB
115 jclass accessClass = (*env)->GetObjectClass(env, jobj);
116 jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTraceVersionFromC", "(II)V");
72984157 117
a31d2894 118 struct LttTraceVersion version_number;
72984157 119
a31d2894
WB
120 if ( ltt_get_trace_version(c_pathname, &version_number) >= 0) {
121 tmpMajorNumber = version_number.ltt_major_version;
122 tmpMinorNumber = version_number.ltt_minor_version;
123 }
72984157 124
a31d2894
WB
125 (*env)->CallVoidMethod(env, jobj, accessFunction, tmpMajorNumber, tmpMinorNumber );
126}
72984157
WB
127/*
128#
129#### */
a31d2894
WB
130
131
1202b93d
WB
132/*
133### TRACE methods ###
134#
135JNI mapping of < LttTrace *ltt_trace_open(const gchar *pathname) > (trace.h) */
136JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1openTrace(JNIEnv *env, jobject jobj, jstring pathname, jboolean show_debug) {
58907341
WB
137
138 if ( !show_debug) {
1202b93d 139 /* Make sure we don't use any debug (speed up the read) */
58907341
WB
140 g_log_set_handler(NULL, G_LOG_LEVEL_INFO, ignore_and_drop_message, NULL);
141 g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, ignore_and_drop_message, NULL);
142 }
143
1202b93d 144 const char *c_pathname = (*env)->GetStringUTFChars(env, pathname, 0);
8b0a0cc8
YB
145 LttTrace *newPtr = ltt_trace_open(c_pathname);
146
147 (*env)->ReleaseStringUTFChars(env, pathname, c_pathname);
148
149 return CONVERT_PTR_TO_JLONG(newPtr);
150}
151
152/* JNI mapping of < LttTrace *ltt_trace_open_live(const gchar *pathname) > (trace.h) */
153JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1openTraceLive(JNIEnv *env, jobject jobj, jstring pathname, jboolean show_debug) {
154
155 if ( !show_debug) {
156 /* Make sure we don't use any debug (speed up the read) */
157 g_log_set_handler(NULL, G_LOG_LEVEL_INFO, ignore_and_drop_message, NULL);
158 g_log_set_handler(NULL, G_LOG_LEVEL_DEBUG, ignore_and_drop_message, NULL);
159 }
160
161 const char *c_pathname = (*env)->GetStringUTFChars(env, pathname, 0);
162 LttTrace *newPtr = ltt_trace_open_live(c_pathname);
f22ebb30
WB
163
164 (*env)->ReleaseStringUTFChars(env, pathname, c_pathname);
165
166 return CONVERT_PTR_TO_JLONG(newPtr);
167}
168
1202b93d
WB
169/* JNI mapping of < void ltt_trace_close(LttTrace *t) > (trace.h) */
170JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1closeTrace(JNIEnv *env, jobject jobj, jlong trace_ptr){
f22ebb30 171
1202b93d 172 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
173
174 ltt_trace_close(newPtr);
175}
176
1202b93d
WB
177/* Get the tracepath */
178JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getTracepath(JNIEnv *env, jobject jobj, jlong trace_ptr) {
179 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
180
181 return (*env)->NewStringUTF(env, g_quark_to_string( newPtr->pathname) );
182}
183
184
1202b93d
WB
185/* Get of num_cpu */
186JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getCpuNumber(JNIEnv *env, jobject jobj, jlong trace_ptr) {
187 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
188
189 return (jint)newPtr->num_cpu;
190}
191
1202b93d
WB
192/* Get of arch_type */
193JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchType(JNIEnv *env, jobject jobj, jlong trace_ptr) {
194 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
195
196 return (jlong)newPtr->arch_type;
197}
198
1202b93d
WB
199/* Get of arch_variant */
200JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchVariant(JNIEnv *env, jobject jobj, jlong trace_ptr) {
201 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
202
203 return (jlong)newPtr->arch_variant;
204}
205
1202b93d
WB
206/* Get of arch_size */
207JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getArchSize(JNIEnv *env, jobject jobj, jlong trace_ptr) {
208 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
209
210 return (jshort)newPtr->arch_size;
211}
212
1202b93d
WB
213/* Get of ltt_major_version */
214JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMajorVersion(JNIEnv *env, jobject jobj, jlong trace_ptr) {
215 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
216
217 return (jshort)newPtr->ltt_major_version;
218}
219
1202b93d
WB
220/* Get of ltt_minor_version */
221JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getLttMinorVersion(JNIEnv *env, jobject jobj, jlong trace_ptr) {
222 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
223
224 return (jshort)newPtr->ltt_minor_version;
225}
226
1202b93d
WB
227/* Get of flight_recorder */
228JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFlightRecorder(JNIEnv *env, jobject jobj, jlong trace_ptr) {
229 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
230
231 return (jshort)newPtr->flight_recorder;
232}
233
1202b93d
WB
234/* Get of freq_scale */
235JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getFreqScale(JNIEnv *env, jobject jobj, jlong trace_ptr) {
236 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
237
238 return (jlong)newPtr->freq_scale;
239}
240
1202b93d
WB
241/* Get of start_freq */
242JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartFreq(JNIEnv *env, jobject jobj, jlong trace_ptr) {
243 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
244
245 return CONVERT_UINT64_TO_JLONG(newPtr->start_freq);
246}
247
1202b93d
WB
248/* Get of start_tsc */
249JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartTimestampCurrentCounter(JNIEnv *env, jobject jobj, jlong trace_ptr) {
250 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
251
252 return CONVERT_UINT64_TO_JLONG(newPtr->start_tsc);
253}
254
1202b93d
WB
255/* Get of start_monotonic */
256JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getStartMonotonic(JNIEnv *env, jobject jobj, jlong trace_ptr) {
257 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
258
259 return CONVERT_UINT64_TO_JLONG(newPtr->start_monotonic);
260}
261
8b0a0cc8
YB
262/* JNI mapping of < int ltt_trace_update(LttTrace *t) > (trace.h) */
263JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1updateTrace(JNIEnv *env, jobject jobj, jlong trace_ptr){
264
265 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
266
267 return (jint)ltt_trace_update(newPtr);
268}
269
1202b93d
WB
270/* Access to start_time */
271/* Note that we are calling the setTimeFromC function in Jaf_Time from here */
272JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTime(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject time_jobj) {
273 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
274
275 jclass accessClass = (*env)->GetObjectClass(env, time_jobj);
276 jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V");
277
278 jlong fullTime = (CONVERT_UINT64_TO_JLONG(newPtr->start_time.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(newPtr->start_time.tv_nsec);
279
280 (*env)->CallVoidMethod(env, time_jobj, accessFunction, fullTime );
281}
282
1202b93d
WB
283/* Access to start_time_from_tsc */
284/* Note that we are calling the setTimeFromC function in Jaf_Time from here */
285JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedStartTimeFromTimestampCurrentCounter(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject time_jobj) {
286 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
287
288 jclass accessClass = (*env)->GetObjectClass(env, time_jobj);
289 jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V");
290
291 jlong fullTime = (CONVERT_UINT64_TO_JLONG(newPtr->start_time_from_tsc.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(newPtr->start_time_from_tsc.tv_nsec);
292
293 (*env)->CallVoidMethod(env, time_jobj, accessFunction, fullTime);
294}
295
296
1202b93d 297/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1getAllTracefiles */
f22ebb30 298void g_datalist_foreach_addTracefilesOfTrace(GQuark name, gpointer data, gpointer user_data) {
1202b93d 299 struct java_calling_data *args = (struct java_calling_data*)user_data;
f22ebb30
WB
300
301 jclass accessClass = (*args->env)->GetObjectClass(args->env, args->jobj);
302 jmethodID accessFunction = (*args->env)->GetMethodID(args->env, accessClass, "addTracefileFromC", "(Ljava/lang/String;J)V");
303
1202b93d
WB
304 GArray *tracefile_array = (GArray*)data;
305 LttTracefile *tracefile;
f22ebb30
WB
306 jlong newPtr;
307
308 unsigned int i;
472656e5
WB
309 for (i=0; i<tracefile_array->len; i++) {
310 tracefile = &g_array_index(tracefile_array, LttTracefile, i);
f22ebb30
WB
311
312 newPtr = CONVERT_PTR_TO_JLONG(tracefile);
313
314 (*args->env)->CallVoidMethod(args->env, args->jobj, accessFunction, (*args->env)->NewStringUTF(args->env, g_quark_to_string(tracefile->name) ), newPtr );
315 }
316}
317
1202b93d
WB
318/* Function to fill up the java map with the event type found in tracefile (the name) */
319JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedAllTracefiles(JNIEnv *env, jobject jobj, jlong trace_ptr) {
320 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
321
322 struct java_calling_data args = { env, jobj };
323
324 g_datalist_foreach(&newPtr->tracefiles, &g_datalist_foreach_addTracefilesOfTrace, &args);
325}
326
472656e5 327
1202b93d
WB
328/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedTracefileTimeRange */
329/* used to save the current timestamp for each tracefile */
472656e5 330void g_datalist_foreach_saveTracefilesTime(GQuark name, gpointer data, gpointer user_data) {
1202b93d 331 struct saveTimeArgs *args = (struct saveTimeArgs*)user_data;
472656e5 332
1202b93d
WB
333 GArray *tracefile_array = (GArray*)data;
334 GArray *save_array = args->saveTimeArray;
472656e5 335
1202b93d
WB
336 LttTracefile *tracefile;
337 struct saveTimeAndTracefile *savedData;
472656e5
WB
338
339 unsigned int i;
340 for (i=0; i<tracefile_array->len; i++) {
341 tracefile = &g_array_index(tracefile_array, LttTracefile, i);
342
1202b93d 343 /* Allocate a new LttTime for each tracefile (so it won't change if the tracefile seek somewhere else) */
472656e5
WB
344 savedData = (struct saveTimeAndTracefile*)malloc( sizeof(struct saveTimeAndTracefile) );
345 savedData->time.tv_sec = tracefile->event.event_time.tv_sec;
346 savedData->time.tv_nsec = tracefile->event.event_time.tv_nsec;
347 savedData->tracefile = tracefile;
1202b93d 348 /* Append the saved data to the array */
472656e5
WB
349 g_array_append_val(save_array, savedData);
350 }
351}
352
353
1202b93d
WB
354/* Obtain the range of the trace (i.e. "start time" and "end time") */
355/* Note : This function, unlike ltt_trace_time_span_get, is assured to return all tracefiles to their correct position after operation */
356/* NOTE : this method is quite heavy to use!!! */
357JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1feedTracefileTimeRange(JNIEnv *env, jobject jobj, jlong trace_ptr, jobject jstart_time, jobject jend_time) {
358 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
58907341 359
1202b93d
WB
360 /* Allocate ourself a new array to save the data in */
361 GArray *savedDataArray = g_array_new(FALSE, FALSE, sizeof(struct saveTimeAndTracefile*) );
472656e5 362 struct saveTimeArgs args = { savedDataArray };
1202b93d 363 /* Call g_datalist_foreach_saveTracefilesTime for each element in the GData to save the time */
472656e5
WB
364 g_datalist_foreach(&newPtr->tracefiles, &g_datalist_foreach_saveTracefilesTime, &args);
365
1202b93d
WB
366 /* Call to ltt_trace_time_span_get to find the current start and end time */
367 /* NOTE : This WILL change the current block of the tracefile (i.e. its timestamp) */
58907341
WB
368 LttTime tmpStartTime = { 0, 0 };
369 LttTime tmpEndTime = { 0, 0 };
370 ltt_trace_time_span_get(newPtr, &tmpStartTime, &tmpEndTime);
371
1202b93d
WB
372 /* Seek back to the correct time for each tracefile and free the allocated memory */
373 struct saveTimeAndTracefile *savedData;
472656e5
WB
374 unsigned int i;
375 for (i=0; i<savedDataArray->len; i++) {
376 savedData = g_array_index(savedDataArray, struct saveTimeAndTracefile*, i);
1202b93d
WB
377 /* Seek back to the correct time */
378 /* Some time will not be consistent here (i.e. unitialized data) */
379 /* but the seek should work just fine with that */
472656e5
WB
380 ltt_tracefile_seek_time(savedData->tracefile, savedData->time);
381
1202b93d 382 /* Free the memory allocated for this saveTimeAndTracefile entry */
472656e5
WB
383 free( savedData );
384 }
1202b93d 385 /* Free the memory allocated for the GArray */
472656e5
WB
386 g_array_free(savedDataArray, TRUE);
387
1202b93d
WB
388 /* Send the start and end time back to the java */
389 /* We do it last to make sure a problem won't leave us with unfred memory */
58907341
WB
390 jclass startAccessClass = (*env)->GetObjectClass(env, jstart_time);
391 jmethodID startAccessFunction = (*env)->GetMethodID(env, startAccessClass, "setTimeFromC", "(J)V");
392 jlong startTime = (CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpStartTime.tv_nsec);
393 (*env)->CallVoidMethod(env, jstart_time, startAccessFunction, startTime);
394
395 jclass endAccessClass = (*env)->GetObjectClass(env, jend_time);
396 jmethodID endAccessFunction = (*env)->GetMethodID(env, endAccessClass, "setTimeFromC", "(J)V");
397 jlong endTime = (CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(tmpEndTime.tv_nsec);
398 (*env)->CallVoidMethod(env, jend_time, endAccessFunction, endTime);
399}
f22ebb30 400
1202b93d
WB
401/* Function to print the content of a trace */
402JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTrace_ltt_1printTrace(JNIEnv *env, jobject jobj, jlong trace_ptr) {
f22ebb30 403
1202b93d 404 LttTrace *newPtr = (LttTrace*)CONVERT_JLONG_TO_PTR(trace_ptr);
f22ebb30
WB
405
406 printf("pathname : %s\n" ,g_quark_to_string(newPtr->pathname) );
407 printf("num_cpu : %u\n" ,(unsigned int)(newPtr->num_cpu) );
408 printf("arch_type : %u\n" ,(unsigned int)(newPtr->arch_type) );
409 printf("arch_variant : %u\n" ,(unsigned int)(newPtr->arch_variant) );
410 printf("arch_size : %u\n" ,(unsigned short)(newPtr->arch_size) );
411 printf("ltt_major_version : %u\n" ,(unsigned short)(newPtr->ltt_major_version) );
412 printf("ltt_minor_version : %u\n" ,(unsigned short)(newPtr->ltt_minor_version) );
413 printf("flight_recorder : %u\n" ,(unsigned short)(newPtr->flight_recorder) );
414 printf("freq_scale : %u\n" ,(unsigned int)(newPtr->freq_scale) );
2b752eed
WB
415 printf("start_freq : %lu\n" ,(long unsigned int)(newPtr->start_freq) );
416 printf("start_tsc : %lu\n" ,(long unsigned int)(newPtr->start_tsc) );
417 printf("start_monotonic : %lu\n" ,(long unsigned int)(newPtr->start_monotonic) );
20521615 418 printf("start_time ptr : %p\n" ,&newPtr->start_time);
2b752eed
WB
419 printf(" tv_sec : %lu\n" ,(long unsigned int)(newPtr->start_time.tv_sec) );
420 printf(" tv_nsec : %lu\n" ,(long unsigned int)(newPtr->start_time.tv_nsec) );
20521615 421 printf("start_time_from_tsc ptr : %p\n" ,&newPtr->start_time_from_tsc);
2b752eed
WB
422 printf(" tv_sec : %lu\n" ,(long unsigned int)(newPtr->start_time_from_tsc.tv_sec) );
423 printf(" tv_nsec : %lu\n" ,(long unsigned int)(newPtr->start_time_from_tsc.tv_nsec) );
20521615 424 printf("tracefiles ptr : %p\n" ,newPtr->tracefiles);
f22ebb30
WB
425 printf("\n");
426}
1202b93d
WB
427/*
428#
429### */
f22ebb30
WB
430
431
432
433
1202b93d
WB
434/*
435### TRACEFILE methods ###
436# */
58907341 437
1202b93d
WB
438/* Get of cpu_online */
439JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsCpuOnline(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
440 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
441
442 return (jboolean)newPtr->cpu_online;
443}
444
1202b93d
WB
445/* Get of long_name */
446JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilepath(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
447 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
448
449 return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->long_name) );
450}
451
1202b93d
WB
452/* Get of name */
453JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracefilename(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
454 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
455
456 return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name) );
457}
458
1202b93d
WB
459/* Get of cpu_num */
460JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCpuNumber(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
461 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
462
463 return (jlong)newPtr->cpu_num;
464}
465
1202b93d
WB
466/* Get of tid */
467JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTid(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
468 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
469
470 return (jlong)newPtr->tid;
471}
472
1202b93d
WB
473/* Get of pgid */
474JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getPgid(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
475 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
476
477 return (jlong)newPtr->pgid;
478}
479
1202b93d
WB
480/* Get of creation */
481JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCreation(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
482 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
483
484 return CONVERT_UINT64_TO_JLONG(newPtr->creation);
485}
486
1202b93d
WB
487/* Get of trace */
488JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getTracePtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
489 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
490
491 return CONVERT_PTR_TO_JLONG(newPtr->trace);
492}
493
1202b93d
WB
494/* Get of mdata */
495JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getMarkerDataPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
496 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
497
498 return CONVERT_PTR_TO_JLONG(newPtr->mdata);
499}
500
1202b93d
WB
501/* Get of fd */
502JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCFileDescriptor(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
503 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
504
505 return (jint)newPtr->fd;
506}
507
1202b93d
WB
508/* Get of file_size */
509JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getFileSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
510 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
511
512 return CONVERT_UINT64_TO_JLONG(newPtr->file_size);
513}
514
1202b93d
WB
515/* Get of num_blocks */
516JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBlockNumber(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
517 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
518
519 return (jlong)newPtr->num_blocks;
520}
521
1202b93d
WB
522/* Get of reverse_bo */
523JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsBytesOrderReversed(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
524 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
525
526 return (jboolean)newPtr->reverse_bo;
527}
528
1202b93d
WB
529/* Get of float_word_order */
530JNIEXPORT jboolean JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getIsFloatWordOrdered(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
531 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
532
533 return (jboolean)newPtr->float_word_order;
534}
535
1202b93d
WB
536/* Get of alignment */
537JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAlignement(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
538 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
539
540 return CONVERT_UINT64_TO_JLONG(newPtr->alignment);
541}
542
1202b93d
WB
543/* Get of buffer_header_size */
544JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferHeaderSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
545 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
546
547 return CONVERT_UINT64_TO_JLONG(newPtr->buffer_header_size);
548}
549
1202b93d
WB
550/* Get of tscbits */
551JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfCurrentTimestampCounter(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
552 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
553
554 return (jint)newPtr->tscbits;
555}
556
1202b93d
WB
557/* Get of eventbits */
558JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBitsOfEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
559 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
560
561 return (jint)newPtr->eventbits;
562}
563
1202b93d
WB
564/* Get of tsc_mask */
565JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMask(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
566 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
567
568 return CONVERT_UINT64_TO_JLONG(newPtr->tsc_mask);
569}
570
1202b93d
WB
571/* Get of tsc_mask_next_bit */
572JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getCurrentTimestampCounterMaskNextBit(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
573 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
574
575 return CONVERT_UINT64_TO_JLONG(newPtr->tsc_mask_next_bit);
576}
577
1202b93d
WB
578/* Get of events_lost */
579JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventsLost(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
580 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
581
582 return (jlong)newPtr->events_lost;
583}
584
1202b93d
WB
585/* Get of subbuf_corrupt */
586JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getSubBufferCorrupt(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
587 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
588
589 return (jlong)newPtr->subbuf_corrupt;
590}
591
1202b93d
WB
592/* Get of event */
593JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getEventPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
594 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
595
596 return CONVERT_PTR_TO_JLONG(&newPtr->event);
597}
598
1202b93d
WB
599/* Get of buffer */
600JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferPtr(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
601 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
602
603 return CONVERT_PTR_TO_JLONG(&newPtr->buffer);
604}
605
1202b93d
WB
606/* Get of buffer size */
607JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getBufferSize(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
608 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30 609
f0241068 610 return (jlong)newPtr->buffer.size;
f22ebb30
WB
611}
612
613
1202b93d 614/* g_list_data function for the "for_each" call in Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1getAllMarkers */
f22ebb30 615void g_hash_table_foreach_addMarkersOfTracefile(gpointer key, gpointer data, gpointer user_data) {
1202b93d
WB
616 struct addMarkersArgs *args = (struct addMarkersArgs*)user_data;
617 struct java_calling_data *jargs = (struct java_calling_data*)args->java_args;
f22ebb30
WB
618
619 jclass accessClass = (*jargs->env)->GetObjectClass(jargs->env, jargs->jobj);
620 jmethodID accessFunction = (*jargs->env)->GetMethodID(jargs->env, accessClass, "addMarkersFromC", "(IJ)V");
621
622 unsigned long marker_id = (unsigned long)data;
623
1202b93d
WB
624 /* The hash table store an ID... we will use the ID to access the array. */
625 GArray *marker = args->mdata->markers;
626 struct marker_info *newPtr = &g_array_index(marker, struct marker_info, marker_id);
f22ebb30
WB
627
628 (*jargs->env)->CallVoidMethod(jargs->env, jargs->jobj, accessFunction, marker_id, CONVERT_PTR_TO_JLONG(newPtr) );
629}
630
1202b93d
WB
631/* Function to fill up the java map with the event type found in tracefile (the name) */
632JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1feedAllMarkers(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
633 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30 634
1202b93d
WB
635 /* ***TODO***
636 Find a better way! This is ugly! */
f22ebb30
WB
637 struct java_calling_data java_args = { env, jobj };
638 struct addMarkersArgs args = { &java_args, newPtr->mdata };
639
640 g_hash_table_foreach( newPtr->mdata->markers_hash, &g_hash_table_foreach_addMarkersOfTracefile, &args);
641}
642
643
1202b93d
WB
644/* Function to print the content of a tracefile */
645JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniTracefile_ltt_1printTracefile(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
f22ebb30 646
1202b93d 647 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
648 printf("cpu_online : %i\n" ,(int)newPtr->cpu_online);
649 printf("long_name : %s\n" ,g_quark_to_string(newPtr->long_name));
650 printf("name : %s\n" ,g_quark_to_string(newPtr->name));
651 printf("cpu_num : %u\n" ,(unsigned int)(newPtr->cpu_num));
652 printf("tid : %u\n" ,(unsigned int)(newPtr->tid));
653 printf("pgid : %u\n" ,(unsigned int)(newPtr->pgid));
2b752eed 654 printf("creation : %lu\n" ,(long unsigned int)(newPtr->creation));
20521615
L
655 printf("trace ptr : %p\n" ,newPtr->trace);
656 printf("marker ptr : %p\n" ,newPtr->mdata);
f22ebb30
WB
657 printf("fd : %i\n" ,(int)(newPtr->fd));
658 printf("file_size : %u\n" ,(unsigned int)(newPtr->file_size));
659 printf("num_blocks : %u\n" ,(unsigned int)(newPtr->num_blocks));
660 printf("reverse_bo : %i\n" ,(int)newPtr->reverse_bo);
661 printf("float_word_order : %i\n" ,(int)newPtr->float_word_order);
662 printf("alignment : %i\n" ,(int)newPtr->alignment);
663 printf("buffer_header_size : %i\n" ,(int)newPtr->buffer_header_size);
664 printf("tscbits : %u\n" ,(unsigned short)newPtr->tscbits);
665 printf("eventbits : %u\n" ,(unsigned short)newPtr->eventbits);
2b752eed
WB
666 printf("tsc_mask : %lu\n" ,(long unsigned int)newPtr->tsc_mask);
667 printf("tsc_mask_next_bit : %lu\n" ,(long unsigned int)newPtr->tsc_mask_next_bit);
f22ebb30
WB
668 printf("events_lost : %u\n" ,(unsigned int)newPtr->events_lost);
669 printf("subbuf_corrupt : %u\n" ,(unsigned int)newPtr->subbuf_corrupt);
20521615
L
670 printf("event ptr : %p\n" ,&newPtr->event);
671 printf("buffer ptr : %p\n" ,&newPtr->buffer);
f22ebb30
WB
672 printf("\n");
673}
1202b93d
WB
674/*
675#
676### */
f22ebb30
WB
677
678
679
1202b93d
WB
680/*
681### EVENT methods ###
682# */
f22ebb30 683
1202b93d
WB
684/* Method to get the read status */
685/* This method will read the next event and then seek back its initial position */
686/* Lttv assume that every tracefile have at least 1 event, but we have not guarantee after this one. */
687/* We will read the next event and return the status of that read */
688/* We will then seek back to our initial position */
689/* Note : this method is expensive and should not be used too often */
690JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1positionToFirstEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
691 LttTracefile *tracefilePtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30 692
1202b93d
WB
693 /* Ask ltt to read the next events on the given tracefiles
694 Returned value can be :
695 0 if everything went fine (EOK)
696 ERANGE = 34 out of range, back to last event (might be system dependent?)
697 EPERM = 1 error while reading (might be system dependent?) */
f22ebb30 698
8b0a0cc8
YB
699 if (tracefilePtr->trace == NULL) {
700 return (jint) EPERM;
701 }
f22ebb30 702
1202b93d 703 /* Seek to the start time... this will also read the first event, as we want. */
2b752eed 704 int returnedValue = ltt_tracefile_seek_time(tracefilePtr, ((struct LttTrace)*(tracefilePtr->trace)).start_time_from_tsc);
f22ebb30
WB
705
706 return (jint)returnedValue;
707}
708
1202b93d
WB
709/* Method to read next event */
710JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1readNextEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr) {
711 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
712
713 /* Ask ltt to read the next events on the given tracefiles
714 Returned value can be :
715 0 if everything went fine (EOK)
716 ERANGE = 34 out of range, back to last event (might be system dependent?)
717 EPERM = 1 error while reading (might be system dependent?) */
f22ebb30 718
f22ebb30 719
1202b93d
WB
720 /* ***FIXME***
721 This might fail on the FIRST event, as the timestamp before the first read is uninitialized
722 However, LTT make the assumption that all tracefile have AT LEAST one event, so we got to run with it */
f22ebb30 723
1202b93d 724 /* Save "last time" before moving, to be able to get back if needed */
f22ebb30
WB
725 LttTime lastTime = newPtr->event.event_time;
726
727 int returnedValue = ltt_tracefile_read(newPtr);
728
1202b93d 729 /* We need to get back to previous after an error to keep a sane state */
f22ebb30
WB
730 if ( returnedValue != 0 ) {
731 ltt_tracefile_seek_time(newPtr, lastTime);
732 }
733
734 return (jint)returnedValue;
735}
736
1202b93d
WB
737/* Method to seek to a certain event */
738JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1seekEvent(JNIEnv *env, jobject jobj, jlong tracefile_ptr, jobject time_jobj) {
739 LttTracefile *newPtr = (LttTracefile*)CONVERT_JLONG_TO_PTR(tracefile_ptr);
f22ebb30
WB
740
741 guint64 fullTime = 0;
742
743 jclass accessClass = (*env)->GetObjectClass(env, time_jobj);
744 jmethodID getTimeFunction = (*env)->GetMethodID(env, accessClass, "getTime", "()J");
745 fullTime = (*env)->CallLongMethod(env, time_jobj, getTimeFunction);
746
1202b93d
WB
747 /* ***HACK***
748 Conversion from jlong -> C long seems to be particularly sloppy
749 Depending how and where (inlined a function or as a single operation) we do this, we might end up with wrong number
750 The following asignation of guint64 seems to work well.
751 MAKE SURE TO PERFORM SEVERAL TESTS IF YOU CHANGE THIS. */
f22ebb30
WB
752 guint64 seconds = fullTime/BILLION;
753 guint64 nanoSeconds = fullTime%BILLION;
754
755 LttTime seekTime = { (unsigned long)seconds, (unsigned long)nanoSeconds };
756
1202b93d
WB
757 /* Ask ltt to read the next events on the given tracefiles
758 Returned value can be :
759 0 if everything went fine (EOK)
760 ERANGE = 34 out of range, back to last event (might be system dependent?)
761 EPERM = 1 error while reading (might be system dependent?) */
f22ebb30
WB
762
763 int returnedValue = ltt_tracefile_seek_time(newPtr, seekTime);
764 return (jint)returnedValue;
765}
766
1202b93d
WB
767/* Get of tracefile */
768JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTracefilePtr(JNIEnv *env, jobject jobj, jlong event_ptr) {
769 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
770
771 return CONVERT_PTR_TO_JLONG(newPtr->tracefile);
772}
773
1202b93d
WB
774/* Get of block */
775JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getBlock(JNIEnv *env, jobject jobj, jlong event_ptr) {
776 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
777
778 return (jlong)newPtr->block;
779}
780
1202b93d
WB
781/* Get of offset */
782JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOffset(JNIEnv *env, jobject jobj, jlong event_ptr) {
783 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
784
785 return (jlong)newPtr->offset;
786}
787
1202b93d
WB
788/* Get of tsc */
789JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCurrentTimestampCounter(JNIEnv *env, jobject jobj, jlong event_ptr) {
790 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
791
792 return CONVERT_UINT64_TO_JLONG(newPtr->tsc);
793}
794
1202b93d
WB
795/* Get of timestamp */
796JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getTimestamp(JNIEnv *env, jobject jobj, jlong event_ptr) {
797 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
798
799 return (jlong)newPtr->timestamp;
800}
801
1202b93d
WB
802/* Get of event_id */
803JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventMarkerId(JNIEnv *env, jobject jobj, jlong event_ptr) {
804 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
805
806 return (jint)newPtr->event_id;
807}
808
1202b93d
WB
809/* Get time in nanoseconds */
810JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getNanosencondsTime(JNIEnv *env, jobject jobj, jlong event_ptr) {
811 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
58907341
WB
812
813 return (CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_nsec);
814}
815
1202b93d
WB
816/* Fill event_time into an object */
817JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1feedEventTime(JNIEnv *env, jobject jobj, jlong event_ptr, jobject time_jobj) {
818 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
819
820 jclass accessClass = (*env)->GetObjectClass(env, time_jobj);
821 jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "setTimeFromC", "(J)V");
822
823 jlong fullTime = (CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_sec)*BILLION) + CONVERT_UINT64_TO_JLONG(newPtr->event_time.tv_nsec);
824
825 (*env)->CallVoidMethod(env, time_jobj, accessFunction, fullTime);
826}
827
1202b93d
WB
828/* Access method to the data */
829/* The data are in "byte" form */
830JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getDataContent(JNIEnv *env, jobject jobj, jlong event_ptr, jlong data_size, jbyteArray dataArray) {
831 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
832
833 (*env)->SetByteArrayRegion(env, dataArray, 0, (jsize)data_size, newPtr->data);
834}
835
1202b93d
WB
836/* Get of data_size */
837JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventDataSize(JNIEnv *env, jobject jobj, jlong event_ptr) {
838 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
839
840 return (jlong)newPtr->data_size;
841}
842
1202b93d
WB
843/* Get of event_size */
844JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getEventSize(JNIEnv *env, jobject jobj, jlong event_ptr) {
845 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
846
847 return (jlong)newPtr->event_size;
848}
849
1202b93d
WB
850/* Get of count */
851JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getCount(JNIEnv *env, jobject jobj, jlong event_ptr) {
852 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
853
854 return (jint)newPtr->count;
855}
856
1202b93d
WB
857/* Get of overflow_nsec */
858JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1getOverflowNanoSeconds(JNIEnv *env, jobject jobj, jlong event_ptr) {
859 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30
WB
860
861 return CONVERT_UINT64_TO_JLONG(newPtr->overflow_nsec);
862}
863
864
1202b93d
WB
865/* Function to print the content of a event */
866JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniEvent_ltt_1printEvent(JNIEnv *env, jobject jobj, jlong event_ptr) {
867 LttEvent *newPtr = (LttEvent*)CONVERT_JLONG_TO_PTR(event_ptr);
f22ebb30 868
20521615 869 printf("tracefile : %p\n" ,(void*)newPtr->tracefile );
2b752eed
WB
870 printf("block : %u\n" ,(unsigned int)newPtr->block );
871 printf("offset : %u\n" ,(unsigned int)newPtr->offset );
872 printf("tsc : %lu\n" ,(long unsigned int)newPtr->tsc );
873 printf("timestamp : %u\n" ,(unsigned int)newPtr->timestamp );
874 printf("event_id : %u\n" ,(unsigned short)newPtr->event_id );
20521615 875 printf("event_time : %p\n" ,(void*) &newPtr->event_time );
2b752eed
WB
876 printf(" sec : %lu\n" ,(long unsigned int)(newPtr->event_time.tv_sec) );
877 printf(" nsec : %lu\n" ,(long unsigned int)(newPtr->event_time.tv_nsec) );
20521615 878 printf("data : %p\n" ,(void*) newPtr->data );
2b752eed
WB
879 printf("data_size : %u\n" ,(unsigned int)newPtr->data_size );
880 printf("event_size : %u\n" ,(unsigned int)newPtr->event_size );
881 printf("count : %d\n" ,(int)newPtr->count );
882 printf("overflow_nsec : %ld\n" ,(long)newPtr->overflow_nsec );
f22ebb30
WB
883 printf("\n");
884}
1202b93d
WB
885/*
886#
887### */
f22ebb30
WB
888
889
1202b93d
WB
890/*
891### MARKER method ###
892# */
f22ebb30 893
1202b93d
WB
894/* Get of name */
895JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getName(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
896 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
897
898 return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name));
899}
900
1202b93d
WB
901/* Get of format */
902JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getFormatOverview(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
903 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
904
905 return (*env)->NewStringUTF(env, newPtr->format);
906}
907
1202b93d
WB
908/* Get of size */
909JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
910 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
911
912 return (jlong)newPtr->size;
913}
914
1202b93d
WB
915/* Method to get all markerField pointers */
916JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAllMarkerFields(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
917 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
918
919 jclass accessClass = (*env)->GetObjectClass(env, jobj);
920 jmethodID accessFunction = (*env)->GetMethodID(env, accessClass, "addMarkerFieldFromC", "(Ljava/lang/String;J)V");
921
1202b93d
WB
922 GArray *field_array = (GArray*)newPtr->fields;
923 struct marker_field *field;
f22ebb30
WB
924 jlong marker_field_ptr;
925
926 unsigned int i;
927 for (i=0; i<field_array->len; i++) {
928 field = &g_array_index(field_array, struct marker_field, i);
929
930 marker_field_ptr = CONVERT_PTR_TO_JLONG(field);
931
932 (*env)->CallVoidMethod(env, jobj, accessFunction, (*env)->NewStringUTF(env, g_quark_to_string(field->name) ), marker_field_ptr );
933 }
934}
935
936
937
1202b93d
WB
938/* Get of largest_align */
939JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLargestAlign(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
940 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
941
942 return (jshort)newPtr->largest_align;
943}
944
1202b93d
WB
945/* Get of int_size */
946JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getIntSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
947 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
948
949 return (jshort)newPtr->int_size;
950}
951
1202b93d
WB
952/* Get of long_size */
953JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getLongSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
954 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
955
956 return (jshort)newPtr->long_size;
957}
958
1202b93d
WB
959/* Get of pointer_size */
960JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getPointerSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
961 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
962
963 return (jshort)newPtr->pointer_size;
964}
965
1202b93d
WB
966/* Get of size_t_size */
967JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getSize_1tSize(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
968 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
969
970 return (jshort)newPtr->size_t_size;
971}
972
1202b93d
WB
973/* Get of alignment */
974JNIEXPORT jshort JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getAlignement(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
975 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
976
977 return (jshort)newPtr->alignment;
978}
979
1202b93d
WB
980/* Get of next */
981JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1getNextMarkerPtr(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
982 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30
WB
983
984 return CONVERT_PTR_TO_JLONG(newPtr->next);
985}
986
987
1202b93d
WB
988/* Function to print the content of a marker */
989JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarker_ltt_1printMarker(JNIEnv *env, jobject jobj, jlong marker_info_ptr) {
990 struct marker_info *newPtr = (struct marker_info*)CONVERT_JLONG_TO_PTR(marker_info_ptr);
f22ebb30 991
2b752eed
WB
992 printf("name : %s\n" ,g_quark_to_string(newPtr->name) );
993 printf("format : %s\n" ,newPtr->format );
994 printf("size : %li\n" ,(long int)newPtr->size );
995 printf("largest_align : %u\n" ,(unsigned short)newPtr->largest_align );
20521615 996 printf("fields : %p\n" ,newPtr->fields );
2b752eed
WB
997 printf("int_size : %u\n" ,(unsigned short)newPtr->int_size );
998 printf("long_size : %u\n" ,(unsigned short)newPtr->long_size );
999 printf("pointer_size : %u\n" ,(unsigned short)newPtr->pointer_size );
1000 printf("size_t_size : %u\n" ,(unsigned short)newPtr->size_t_size );
1001 printf("alignment : %u\n" ,(unsigned short)newPtr->alignment );
20521615 1002 printf("next : %p\n" ,newPtr->next );
f22ebb30
WB
1003 printf("\n");
1004}
1202b93d
WB
1005/*
1006#
1007### */
f22ebb30 1008
f22ebb30
WB
1009
1010
1202b93d
WB
1011/*
1012### MARKERFIELD Method
1013# */
f22ebb30 1014
1202b93d
WB
1015/* Get of name */
1016JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getField(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1017 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1018
1019 return (*env)->NewStringUTF(env, g_quark_to_string(newPtr->name));
1020}
1021
1202b93d
WB
1022/* Get of type */
1023JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getType(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1024 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1025
1026 return (jint)newPtr->type;
1027}
1028
1202b93d
WB
1029/* Get of alignment */
1030JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAlignment(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1031 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1032
1033 return CONVERT_UINT64_TO_JLONG(newPtr->alignment);
1034}
1035
1202b93d
WB
1036/* Get of attributes */
1037JNIEXPORT jlong JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getAttributes(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1038 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1039
1040 return CONVERT_UINT64_TO_JLONG(newPtr->attributes);
1041}
1042
1202b93d
WB
1043/* Get of static_offset */
1044JNIEXPORT jint JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getStatic_1offset(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1045 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1046
1047 return (jint)newPtr->static_offset;
1048}
1049
1202b93d
WB
1050/* Get of fmt */
1051JNIEXPORT jstring JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1getFormat(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1052 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30
WB
1053
1054 return (*env)->NewStringUTF(env, newPtr->fmt->str);
1055}
1056
1202b93d
WB
1057/* Function to print the content of a marker_field */
1058JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniMarkerField_ltt_1printMarkerField(JNIEnv *env, jobject jobj, jlong marker_field_ptr) {
1059 struct marker_field *newPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
f22ebb30 1060
2b752eed
WB
1061 printf("name : %s\n" ,g_quark_to_string(newPtr->name) );
1062 printf("type : %i\n" ,(int)newPtr->type );
2b752eed
WB
1063 printf("alignment : %lu\n" ,(long unsigned int)newPtr->alignment );
1064 printf("attributes : %lu\n" ,(long unsigned int)newPtr->attributes );
1065 printf("static_offset : %i\n" ,(int)newPtr->static_offset );
1066 printf("fmt : %s\n" ,newPtr->fmt->str );
f22ebb30
WB
1067 printf("\n");
1068}
1202b93d
WB
1069/*
1070#
1071### */
f22ebb30
WB
1072
1073
1202b93d
WB
1074/*
1075### PARSER Method
1076# */
f22ebb30 1077
1202b93d
WB
1078/* This function will do the actual parsing */
1079/* It will then call java to assign the parsed data to the object "javaObj" */
1080JNIEXPORT void JNICALL Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData(JNIEnv *env, jclass accessClass, jobject javaObj, jlong event_ptr, jlong marker_field_ptr) {
f22ebb30 1081 LttEvent newEventPtr = *(LttEvent*)(CONVERT_JLONG_TO_PTR(event_ptr));
1202b93d 1082 struct marker_field *newMarkerFieldPtr = (struct marker_field*)CONVERT_JLONG_TO_PTR(marker_field_ptr);
9f652987 1083 struct LttField *newLttFieldPtr = ltt_event_field(&newEventPtr, marker_field_get_index(newMarkerFieldPtr));
f22ebb30
WB
1084
1085 jmethodID accessFunction = NULL;
1086
1087
1202b93d
WB
1088 /*
1089 There is a very limited number of type in LTT
1090 We will switch on the type for this field and act accordingly
1091 NOTE : We will save all integer into "long" type, as there is no signed/unsigned in java */
f22ebb30 1092
1202b93d
WB
1093 /* ***HACK***
1094 It seems the marker_field->type is absolutely not consistent, especially about pointer!
1095 Sometime pointer are saved in String, sometime as Int, sometime as pointer...
1096 We will do an extra check on type "LTT_TYPE_UNSIGNED_INT" to check if the marker_field->format is hint of a pointer */
f22ebb30
WB
1097 switch ( newMarkerFieldPtr->type ) {
1098 case LTT_TYPE_SIGNED_INT :
58907341 1099 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30
WB
1100 (*env)->CallStaticVoidMethod( env,
1101 accessClass,
1102 accessFunction,
1103 javaObj,
58907341 1104 ltt_event_get_long_int(&newEventPtr, newMarkerFieldPtr)
f22ebb30
WB
1105 );
1106
1107 break;
1108
1109 case LTT_TYPE_UNSIGNED_INT :
1202b93d 1110 /* If the format seems to be a pointer, add it as a pointer */
f22ebb30 1111 if ( (strncmp(newMarkerFieldPtr->fmt->str, "0x%llX", newMarkerFieldPtr->fmt->len) == 0 ) || (strncmp(newMarkerFieldPtr->fmt->str, "%llX", newMarkerFieldPtr->fmt->len) == 0 ) ) {
58907341
WB
1112 #if __WORDSIZE == 64
1113 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30 1114 #else
58907341 1115 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30
WB
1116 #endif
1117 (*env)->CallStaticVoidMethod( env,
1118 accessClass,
1119 accessFunction,
1120 javaObj,
58907341 1121 CONVERT_PTR_TO_JLONG(ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr) )
f22ebb30
WB
1122 );
1123 }
1202b93d 1124 /* Otherwise, add it as a number */
f22ebb30 1125 else {
58907341 1126 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30
WB
1127 (*env)->CallStaticVoidMethod( env,
1128 accessClass,
1129 accessFunction,
1130 javaObj,
58907341 1131 ltt_event_get_long_unsigned(&newEventPtr, newMarkerFieldPtr)
f22ebb30
WB
1132 );
1133 }
1134
1135 break;
1136
1137 case LTT_TYPE_POINTER :
58907341
WB
1138 #if __WORDSIZE == 64
1139 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addLongPointerToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30 1140 #else
58907341 1141 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addIntPointerToParsingFromC", "(Ljava/lang/Object;J)V");
f22ebb30
WB
1142 #endif
1143 (*env)->CallStaticVoidMethod( env,
1144 accessClass,
1145 accessFunction,
1146 javaObj,
9f652987 1147 CONVERT_PTR_TO_JLONG(*(GINT_TYPE_FOR_PTR*)(newEventPtr.data + newLttFieldPtr->offset))
f22ebb30
WB
1148 );
1149 break;
1150
1151 case LTT_TYPE_STRING :
58907341 1152 accessFunction = (*env)->GetStaticMethodID(env, accessClass, "addStringToParsingFromC", "(Ljava/lang/Object;Ljava/lang/String;)V");
f22ebb30
WB
1153 (*env)->CallStaticVoidMethod( env,
1154 accessClass,
1155 accessFunction,
1156 javaObj,
58907341 1157 (*env)->NewStringUTF(env, ltt_event_get_string(&newEventPtr, newMarkerFieldPtr) )
f22ebb30
WB
1158 );
1159 break;
1160
1161 case LTT_TYPE_COMPACT :
1162 case LTT_TYPE_NONE :
1163 default :
58907341 1164 printf("Warning : Unrecognized format type! Skipping! (Java_org_eclipse_linuxtools_lttng_jni_JniParser_ltt_1getParsedData)");
f22ebb30
WB
1165 break;
1166 }
1167
1168}
1202b93d
WB
1169/*
1170#
1171### */
This page took 0.087941 seconds and 4 git commands to generate.