Hello, Thank you for the slides. I manged to build the kernel modules and I insmod them manually. On the device I copied in /data/lttng following binaries `lttng`, `lttng-relayd` and `lttng-sessiond`. If I execute `./lttng list -k` it shows me a list of available kernel events. I create a session called mysession with `./lttng create mysession` and I enable tracing on all the event with `./lttng enable-event -a -k`. But here starts my problem.
The output of the last command is the following: root@android:/data/lttng # ./lttng enable-event -a -k PERROR [3681/3681]: kernel start consumer exec: (null) (in spawn_consumerd() at main.c:2007) Error: Condition timed out. The consumer thread was never ready. Killing it Warning: Using pthread_kill as pthread_cancel is missing on the current platform PERROR [3608/3658]: write poll pipe: (null) (in notify_thread_pipe() at utils.c:43) Error: Events: Fatal error of the session daemon (channel channel0, session mysession) Do you have any idea about what could be wrong? What options should I check in the kernel configuration? (I checked all that is under Tracing) --Ionut On Thu, May 23, 2013 at 6:09 PM, Charles Brière <[email protected]>wrote: > Module location doesn't really matter, we used to push them to /data/... > or /sdcard/... . > > Modprobe doesn't exists on Android so you'll need to use insmod. We used this > script <https://docs.google.com/file/d/0B56W2viIJ4oqOU1qTHJZY0V2MzQ/edit>in > order to compile, push to device and load modules. > > We also made a presentation you might be interested in that can be viewed > on > https://docs.google.com/presentation/d/14lte2AchEAyxMk3WSQ53SdbBm2tfmABBFQojuUhxg7Y/pub?start=false&loop=false&delayms=3000 > > > On Thu, May 23, 2013 at 10:40 AM, Ionut D. <[email protected]> wrote: > >> About the kernel modules. Where should they be located on the target? >> Should I have modprobe or insmod it is enough? >> >> >> On Thu, May 23, 2013 at 2:19 PM, Ionut D. <[email protected]> wrote: >> >>> Sorry for my late response. At the end after different some adds >>> (defines in libc) I managed to compile them for ICS with NDK r7c. I was a >>> problem of environment. >>> >>> >>> On Tue, May 21, 2013 at 9:26 PM, Pierre-Luc St-Charles < >>> [email protected]> wrote: >>> >>>> Well, I cannot get my hands on a R7 NDK this very moment, but I'm >>>> surprised there are no grep hits in the ./platforms/android-XX/arch-arm >>>> directory; can you verify that the NDK you have does include an ARM >>>> architecture sysroot? That's the the one you should be compiling with, and >>>> I believe you'll find the asm/unistd.h header there (as there is no 32/64 >>>> bit difference on Android+ARM yet). >>>> >>>> >>>> On Tue, May 21, 2013 at 11:29 AM, Ionut D. <[email protected]> wrote: >>>> >>>>> The problem is that I am trying to build it on ICS with NDK r7 and I >>>>> tried to build it in the both ways with the ndk and also by creating >>>>> Android.mk files and it looks like is not working. I searched with grep >>>>> firstly through NDK and second through bionic and these are the results: >>>>> >>>>> NDK: >>>>> #grep -r __NR_splice . >>>>> ./platforms/android-9/arch-x86/usr/include/asm/unistd_32.h:#define >>>>> __NR_splice 313 >>>>> ./platforms/android-14/arch-x86/usr/include/asm/unistd_32.h:#define >>>>> __NR_splice 313 >>>>> >>>>> bionic: >>>>> grep -r __NR_splice bionic >>>>> bionic/libc/kernel/arch-sh/asm/unistd_32.h:#define __NR_splice 313 >>>>> bionic/libc/kernel/arch-sh/asm/unistd_64.h:#define __NR_splice 341 >>>>> bionic/libc/kernel/arch-x86/asm/unistd_32.h:#define __NR_splice 313 >>>>> >>>>> Looking through results I see that '__NR_splice' it not in unistd.h >>>>> and I know this is important. >>>>> >>>>> Ionut >>>>> >>>>> >>>>> On Tue, May 21, 2013 at 5:15 PM, Pierre-Luc St-Charles < >>>>> [email protected]> wrote: >>>>> >>>>>> The first error refers to __NR_splice, which should be declared once >>>>>> asm/unistd.h is included; in this case, it is included right above the >>>>>> problematic line (src/common/compat/fcntl.h @ L35). Could you verify that >>>>>> __NR_splice is defined somewhere in that file? If not, it might be a >>>>>> little >>>>>> more problematic. >>>>>> >>>>>> As for the second error, I believe it is also caused by a missing >>>>>> symbol that should be included in asm/signal.h, which is in turn usually >>>>>> included via signal.h itself. >>>>>> >>>>>> Compiling with the NDK (v8, platform 14) is successful here, and I >>>>>> can find all these missing symbols in the default system includes there. >>>>>> Are you sure you specified the target sysroot when compiling? >>>>>> >>>>>> -PL >>>>>> >>>>>> >>>>>> On Tue, May 21, 2013 at 6:26 AM, Ionut D. <[email protected]>wrote: >>>>>> >>>>>>> I tried to compile lttng-tools and at compile time exits with the >>>>>>> bellow error. I looked in the sources and it looks like for arm this is >>>>>>> not >>>>>>> implemented. Do you have any idea about how could this be fixed? >>>>>>> >>>>>>> >>>>>>> In file included from >>>>>>> external/lttng-tools/src/common/compat/compat-fcntl.c:19: >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h: >>>>>>> In function 'splice': >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44: >>>>>>> error: '__NR_splice' undeclared (first use in this function) >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44: >>>>>>> error: (Each undeclared identifier is reported only once >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:44: >>>>>>> error: for each function it appears in.) >>>>>>> In file included from >>>>>>> external/lttng-tools/src/common/compat/compat-fcntl.c:19: >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:48:1: >>>>>>> warning: "POSIX_FADV_DONTNEED" redefined >>>>>>> In file included from >>>>>>> external/lttng-tools/src/common/compat/../../../src/common/compat/fcntl.h:47, >>>>>>> from >>>>>>> external/lttng-tools/src/common/compat/compat-fcntl.c:19: >>>>>>> bionic/libc/kernel/common/linux/fadvise.h:24:1: warning: this is the >>>>>>> location of the previous definition >>>>>>> In file included from bionic/libc/include/sys/select.h:34, >>>>>>> from bionic/libc/include/unistd.h:34, >>>>>>> from >>>>>>> external/lttng-tools/src/common/compat/compat-fcntl.c:20: >>>>>>> external/lttng-tools/src/common/compat/signal.h: At top level: >>>>>>> external/lttng-tools/src/common/compat/signal.h:27: error: expected >>>>>>> ';', ',' or ')' before '*' token >>>>>>> external/lttng-tools/src/common/compat/signal.h:28: error: expected >>>>>>> ';', ',' or ')' before '*' token >>>>>>> external/lttng-tools/src/common/compat/signal.h:29: error: expected >>>>>>> ';', ',' or ')' before '*' token >>>>>>> In file included from bionic/libc/include/unistd.h:34, >>>>>>> from >>>>>>> external/lttng-tools/src/common/compat/compat-fcntl.c:20: >>>>>>> bionic/libc/include/sys/select.h:42: error: expected ';', ',' or ')' >>>>>>> before '*' token >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Sat, May 18, 2013 at 10:21 AM, Ionut D. <[email protected]>wrote: >>>>>>> >>>>>>>> Great informations! I will post back the results. >>>>>>>> >>>>>>>> >>>>>>>> On Fri, May 17, 2013 at 4:47 PM, Pierre-Luc St-Charles < >>>>>>>> [email protected]> wrote: >>>>>>>> >>>>>>>>> Alright, small update for all following a quick (non-mailing-list) >>>>>>>>> exchange: >>>>>>>>> >>>>>>>>> We did successfully complete a kernel-tracing port of LTTng for >>>>>>>>> Android (somewhat old news), but we are still working on bringing our >>>>>>>>> patches back up to date with the current version of the different >>>>>>>>> projects >>>>>>>>> (soon-ish still applies here, we're talking days). So far, we dwelled >>>>>>>>> a >>>>>>>>> little bit in LTTng-UST, but haven't done much changes, so userspace >>>>>>>>> tracing is still not functional. Device that ran kernel traces >>>>>>>>> successfully >>>>>>>>> so far were the Nexus S and the Nexus 7 (example Nexus S trace >>>>>>>>> available >>>>>>>>> here<https://drive.google.com/folderview?id=0B55Ba7lWTLh4U0hGeTQ4bmRYRjQ&usp=sharing>; >>>>>>>>> still not perfect). >>>>>>>>> >>>>>>>>> Basically, we cross-compiled everything via the Android NDK (no >>>>>>>>> Android makefiles involved here), and pushed all required bins to a >>>>>>>>> device >>>>>>>>> without having to flash it (unless the default kernel config didn't >>>>>>>>> allow >>>>>>>>> tracing -- then we'd have to flash). This approach is not compatible >>>>>>>>> with >>>>>>>>> the official Android build system (meaning we wouldn't be able to add >>>>>>>>> it to >>>>>>>>> Android like this), but we might eventually get working on the damned >>>>>>>>> Android makefiles (they're extremely painful to write, especially >>>>>>>>> since >>>>>>>>> LTTng uses Autotools). >>>>>>>>> >>>>>>>>> The librairies required by LTTng that are not already included in >>>>>>>>> a regular Android build (uuid/popt) can actually be found/compiled >>>>>>>>> from the >>>>>>>>> official repo, in its 'external' directory (see oprofile and e2fsprog >>>>>>>>> -- >>>>>>>>> from memory). That might not be the easiest way to get them (full repo >>>>>>>>> download is BIG), but compatibility is assured, and you can skip a >>>>>>>>> full >>>>>>>>> build by simply making those two individually for your device (if >>>>>>>>> that's >>>>>>>>> all you need). >>>>>>>>> >>>>>>>>> You'll also need your device to be rooted to use LTTng at all; >>>>>>>>> then, most initializations are done via scripts (we'll also provide >>>>>>>>> those >>>>>>>>> with our patches). We still had some trouble automating everything via >>>>>>>>> daemons, so we always ran the sessiond locally (with success). >>>>>>>>> >>>>>>>>> Major problems we encountered so far were missing posix functions, >>>>>>>>> and sysv shared memory. Basically, Android relies on Bionic for its >>>>>>>>> system >>>>>>>>> calls and other low-level functions, and since Bionic is pretty >>>>>>>>> 'lightweight', they trimmed most of the fat out for performance. We >>>>>>>>> had to >>>>>>>>> make some more-or-less sketchy replacements here and there, but >>>>>>>>> everything >>>>>>>>> seems to be working decently now. >>>>>>>>> >>>>>>>>> So, simple 'how do I put LTTng on Android' workflow would be this: >>>>>>>>> >>>>>>>>> - Compile modules (using NDK) against device's kernel, making >>>>>>>>> sure its config is appropriate, ship them over via ADB >>>>>>>>> >>>>>>>>> - Compile required external libraries (using repo build system) >>>>>>>>> for the device, ship them over via ADB >>>>>>>>> >>>>>>>>> - Patch up LTTng-* (soon-ish! I could send you the outdated >>>>>>>>> patches right now if you're interested though, they might be a month >>>>>>>>> behind >>>>>>>>> or so on the current trunks) >>>>>>>>> >>>>>>>>> - Cross-compile LTTng-* for the device (using NDK), ship >>>>>>>>> binaries over via ADB >>>>>>>>> >>>>>>>>> Then, on the device, start up the sessiond manually & start >>>>>>>>> tracing. >>>>>>>>> >>>>>>>>> >>>>>>>>> I think I went over everything, but if there's a part that's still >>>>>>>>> cloudy, don't hesitate. >>>>>>>>> >>>>>>>>> >>>>>>>>> -PL >>>>>>>>> >>>>>>>>> >>>>>>>>> On May 17, 2013 1:32 AM, "Ionut D." <[email protected]> wrote: >>>>>>>>> >>>>>>>>>> Hello all, >>>>>>>>>> >>>>>>>>>> Recently I started to integrate LTTNG in Android ICS by compiling >>>>>>>>>> each package, each dependency, by using the Android build system. It >>>>>>>>>> is a >>>>>>>>>> lot of work because I met different problems and to be sincere, I do >>>>>>>>>> not >>>>>>>>>> know if at the end will work and I do not know how much I will need >>>>>>>>>> to >>>>>>>>>> modify the sources in order to work. >>>>>>>>>> >>>>>>>>>> My questions are about this integration. I mention that I read a >>>>>>>>>> lot of discussions about this on Internet, on this mailing list, but >>>>>>>>>> the >>>>>>>>>> things are still not very clear for me. >>>>>>>>>> >>>>>>>>>> It is ok? what I am trying to do ? to integrate and build by >>>>>>>>>> using the Android build system. >>>>>>>>>> Could you give me some guidelines, indications about how I should >>>>>>>>>> proceed, maybe a tutorial or maybe some android make files/patches >>>>>>>>>> that >>>>>>>>>> would help me to see how the job must be done and if I am doing it >>>>>>>>>> right ? >>>>>>>>>> >>>>>>>>>> Until now I managed to build lttng-modules, liburcu, libuuid from >>>>>>>>>> util-linux and configure lttng-ust by using the android toolchain >>>>>>>>>> for arm. >>>>>>>>>> I got a lot of errors but until now I managed to configure/make these >>>>>>>>>> packages. >>>>>>>>>> >>>>>>>>>> I mention that I am trying to build lttng 2.x on ICS 4.0.3. >>>>>>>>>> >>>>>>>>>> Would be great if you will give me a tutorial about how to do it. >>>>>>>>>> >>>>>>>>>> Ionut >>>>>>>>>> >>>>>>>>>> _______________________________________________ >>>>>>>>>> lttng-dev mailing list >>>>>>>>>> [email protected] >>>>>>>>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev >>>>>>>>>> >>>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> >> _______________________________________________ >> lttng-dev mailing list >> [email protected] >> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev >> >> >
_______________________________________________ lttng-dev mailing list [email protected] http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
