xref: /aosp_15_r20/external/perfetto/src/android_internal/README.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard WorkerThis directory contains code that accesses Android (hw)binder interfaces and is
2*6dbdd20aSAndroid Build Coastguard Workerdynamically loaded and used by traced_probes / perfetto command line client.
3*6dbdd20aSAndroid Build Coastguard WorkerThe code in this directory is built as a separate .so library and can depend on
4*6dbdd20aSAndroid Build Coastguard Workeron Android internals.
5*6dbdd20aSAndroid Build Coastguard Worker
6*6dbdd20aSAndroid Build Coastguard WorkerBlock diagram:
7*6dbdd20aSAndroid Build Coastguard Worker
8*6dbdd20aSAndroid Build Coastguard Worker```
9*6dbdd20aSAndroid Build Coastguard Worker+---------------+       +---------------------------------+
10*6dbdd20aSAndroid Build Coastguard Worker| traced_probes |- - -> | libperfetto_android_internal.so |
11*6dbdd20aSAndroid Build Coastguard Worker+---------------+  ^    +---------------+-----------------+
12*6dbdd20aSAndroid Build Coastguard Worker                   |                    |
13*6dbdd20aSAndroid Build Coastguard Worker                   |                    | [  Non-NDK libraries ]
14*6dbdd20aSAndroid Build Coastguard Worker                   |                    +-> libbase.so
15*6dbdd20aSAndroid Build Coastguard Worker                   |                    +-> libutils.so
16*6dbdd20aSAndroid Build Coastguard Worker                   |                    +-> libhidltransport.so
17*6dbdd20aSAndroid Build Coastguard Worker                   |                    +-> libhwbinder.so
18*6dbdd20aSAndroid Build Coastguard Worker                   |                    +-> [email protected]
19*6dbdd20aSAndroid Build Coastguard Worker                   |
20*6dbdd20aSAndroid Build Coastguard Worker                   + dynamically loaded on first use via dlopen()
21*6dbdd20aSAndroid Build Coastguard Worker```
22*6dbdd20aSAndroid Build Coastguard Worker
23*6dbdd20aSAndroid Build Coastguard WorkerThe major reason for using a separate .so() and introducing the shared library
24*6dbdd20aSAndroid Build Coastguard Workerlayer is avoiding the cost of linker relocations (~150 KB private dirty)
25*6dbdd20aSAndroid Build Coastguard Workerrequired for loading the graph of binder-related libraries.
26*6dbdd20aSAndroid Build Coastguard Worker
27*6dbdd20aSAndroid Build Coastguard WorkerThe general structure and rules for code in this directory is as-follows:
28*6dbdd20aSAndroid Build Coastguard Worker- Targets herein defined must be leaf targets. Dependencies to perfetto targets
29*6dbdd20aSAndroid Build Coastguard Worker  (e.g. base) are not allowed, as doing that would create ODR violations.
30*6dbdd20aSAndroid Build Coastguard Worker- Headers (e.g. health_hal.h) must have a plain old C interface (to avoid
31*6dbdd20aSAndroid Build Coastguard Worker  dealing with name mangling) and should not expose neither android internal
32*6dbdd20aSAndroid Build Coastguard Worker  structure/types nor struct/types defined in perfetto headers outside of this
33*6dbdd20aSAndroid Build Coastguard Worker  directory.
34*6dbdd20aSAndroid Build Coastguard Worker- Dependencies to Android internal headers are allowed only in .cc files, not
35*6dbdd20aSAndroid Build Coastguard Worker  in headers.
36