Split syscall tracepoint generation in their own files
authorFrancis Deslauriers <francis.deslauriers@efficios.com>
Fri, 30 Apr 2021 21:30:48 +0000 (17:30 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Thu, 6 May 2021 17:44:58 +0000 (13:44 -0400)
commite42c4f49c15b4365de8d01b1a010c9b7e95163b8
tree60c836d7ad4fe1f061167b8362a78176d35745de
parentb4781a696ebd02c28e1f6d10f347cea82fb72cbb
Split syscall tracepoint generation in their own files

This commit tracepoint generation of the 4 different types of syscalls
(entry, exit, entry_compat, and exit_compat) each in their own .c file.

The compilation time of the lttng-modules projects is currently
dominated by the compilation of the src/lttng-syscalls.o object.
This is caused by the extensive use of macros to generate tracepoint for
all syscalls. This also uses a lot of memory making the compilation of
the project tedious on system with low memory.

This allows for parallelization of the compilation which offers 2
improvements: Reduction of compilation time and reduction of the memory
usage.

In term of compilation time, on my 4 cpus laptop, I measured a 15sec
(20%) speedup over 10 runs when using all 4 cpus (make -j4).

On a larger machine (16 cpus), I measured 30sec (60%) speedup when using
all 16 cpus.

In term of memory usage, I was able to compile the project on a virtual
machine with 500MB of memory without hitting memory exhaustion errors.

Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Change-Id: I025a4c36ef16b935be2a86f5b6649526752a7393
include/instrumentation/syscalls/headers/syscalls_pointers_override.h
include/lttng/tracepoint-event.h
src/Kbuild
src/lttng-syscalls-entry-compat-table.c [new file with mode: 0644]
src/lttng-syscalls-entry-table.c [new file with mode: 0644]
src/lttng-syscalls-exit-compat-table.c [new file with mode: 0644]
src/lttng-syscalls-exit-table.c [new file with mode: 0644]
src/lttng-syscalls.c
src/lttng-syscalls.h
This page took 0.025956 seconds and 4 git commands to generate.