[lttng-dev] LTTNG on Android ICS

Ionut D. ionut5001 at gmail.com
Thu May 23 10:40:38 EDT 2013


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. <ionut5001 at gmail.com> 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 <
> pierre-luc.st-charles at polymtl.ca> 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. <ionut5001 at gmail.com> 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 <
>>> pierre-luc.st-charles at polymtl.ca> 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. <ionut5001 at gmail.com> 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. <ionut5001 at gmail.com>wrote:
>>>>>
>>>>>> Great informations! I will post back the results.
>>>>>>
>>>>>>
>>>>>> On Fri, May 17, 2013 at 4:47 PM, Pierre-Luc St-Charles <
>>>>>> pierre-luc.st-charles at polymtl.ca> 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." <ionut5001 at gmail.com> 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
>>>>>>>> lttng-dev at lists.lttng.org
>>>>>>>> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20130523/e76ebe05/attachment-0001.html>


More information about the lttng-dev mailing list