* Nikita Izyumtsev ([email protected]) wrote: > Hi everybody! > > First of all, I'm not sure if I'm posting to right mailing list. My > question is concerning lttv. If I'm not, please point me at correct > one. Thank you! >
Yep, that's the right place. > I'm facing some unpleasant issue with latest lttv (both 0.12.30 and > git snapshot). After lttv packages installation, if I try to compile > some simple application (just open and then close trace), I see > following: > In file included from test.c:2: > /usr/include/ltt/trace.h:24:29: error: ltt/ltt-private.h: No such file > or directory > In file included from test.c:2: > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_name’: > /usr/include/ltt/trace.h:96: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_long_name’: > /usr/include/ltt/trace.h:101: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_cpu’: > /usr/include/ltt/trace.h:108: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_tid’: > /usr/include/ltt/trace.h:114: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_pgid’: > /usr/include/ltt/trace.h:119: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_creation’: > /usr/include/ltt/trace.h:124: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_get_trace’: > /usr/include/ltt/trace.h:129: error: dereferencing pointer to incomplete type > /usr/include/ltt/trace.h: In function ‘ltt_tracefile_block_number’: > /usr/include/ltt/trace.h:136: error: dereferencing pointer to incomplete type > > After short investigation, I have found, that public header file > trace.h includes private libltt header private-ltt.h. I have that by > removing private-ltt.h reference and putting all inlined functions > into library body (and preserving current ABI in that way) --- see > attached patch, but it resulted in another compilation failure, this > time in lttv: > batchtest.c: In function ‘trace_event’: > batchtest.c:175: error: dereferencing pointer to incomplete type > batchtest.c: In function ‘save_state_copy_event’: > batchtest.c:233: error: dereferencing pointer to incomplete type > batchtest.c: In function ‘compute_tracefile’: > batchtest.c:332: error: dereferencing pointer to incomplete type > > Reason for this failure is that batchtest.c relies on private > declaration of LttTracefile :) > > outcome: I'm willing to fix all that stuff, but I'm *very* new to ltt, > and I would like someone to define libltt API. OK, I see the issue. ltttraceread is a LGPL library, and it should be possible to link BSD/proprietary/... applications other than LTTV to it. We need to declare the API as symbols for these to be available externally. We cannot rely on publishing ltt-private.h to these applications. However, I don't want to penalize GPL and LGPL applications: they should be able to still access the data without the extra function call overhead. So I propose that we do something similar to what I have done in the Userspace RCU library: If the application is GPL or LGPL, it can do: #define _LGPL_SOURCE #include <urcu.h> (urcu.h will use static inlines) or, if _LGPL_source is not defined when including urcu.h, it will emit declarations. urcu.c will in all cases emit the implementation and symbols. See http://lttng.org/urcu to get the library if you need inspiration about how to do that. For the other internal field accesses from LTTV, it does make sense to look at them individually and extend the ltttraceread API accordingly. Thanks ! Mathieu > > Nikita > _______________________________________________ > ltt-dev mailing list > [email protected] > http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev -- Mathieu Desnoyers Operating System Efficiency R&D Consultant EfficiOS Inc. http://www.efficios.com _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
