libcamera: tracing: Implement tracing infrastructure
Implement tracing infrastructure in libcamera. It takes .tp files, as required by lttng, and generates a tracepoint header and C file, as lttng requires. meson is updated accordingly to get it to compile with the rest of libcamera. Update the documentation accordingly. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
subdir('ipu3')
|
||||
subdir('tracepoints')
|
||||
|
||||
## Code generation
|
||||
py_modules += ['yaml']
|
||||
|
||||
@@ -0,0 +1,38 @@
|
||||
#!/usr/bin/env python3
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
# Copyright (C) 2020, Google Inc.
|
||||
#
|
||||
# Author: Paul Elder <paul.elder@ideasonboard.com>
|
||||
#
|
||||
# gen-tp-header.py - Generate header file to contain lttng tracepoints
|
||||
|
||||
import datetime
|
||||
import jinja2
|
||||
import os
|
||||
import sys
|
||||
|
||||
def main(argv):
|
||||
if len(argv) < 3:
|
||||
print(f'Usage: {argv[0]} output template tp_files...')
|
||||
return 1
|
||||
|
||||
output = argv[1]
|
||||
template = argv[2]
|
||||
|
||||
year = datetime.datetime.now().year
|
||||
path = output.replace('include/', '', 1)
|
||||
|
||||
source = ''
|
||||
for fname in argv[3:]:
|
||||
source += open(fname, 'r', encoding='utf-8').read() + '\n\n'
|
||||
|
||||
template = jinja2.Template(open(template, 'r', encoding='utf-8').read())
|
||||
string = template.render(year=year, path=path, source=source)
|
||||
|
||||
f = open(output, 'w', encoding='utf-8').write(string)
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main(sys.argv))
|
||||
@@ -0,0 +1,5 @@
|
||||
# SPDX-License-Identifier: CC0-1.0
|
||||
|
||||
py_modules += ['jinja2']
|
||||
|
||||
gen_tracepoints_header = find_program('./gen-tp-header.py')
|
||||
Reference in New Issue
Block a user