lib, configure.ac: initial LTTng support

This commit adds initial support for LTTng.

When --enable-lttng=no or is not specified, no tracing code is included.
When --enable-lttng=yes, LTTng tracing events are (will be) generated.

configure.ac:
- add --enable-lttng
- define HAVE_LTTNG when enabled
- minimum LTTng version: 2.12.0

lib:
- add trace.[ch]
- update subdir.am

Signed-off-by: Quentin Young <qlyoung@nvidia.com>
This commit is contained in:
Quentin Young 2020-09-14 18:02:56 -04:00
parent 02178900de
commit 0cbcadccf7
4 changed files with 71 additions and 1 deletions

View file

@ -566,6 +566,8 @@ AC_ARG_ENABLE([grpc],
AS_HELP_STRING([--enable-grpc], [enable the gRPC northbound plugin]))
AC_ARG_ENABLE([zeromq],
AS_HELP_STRING([--enable-zeromq], [enable ZeroMQ handler (libfrrzmq)]))
AC_ARG_ENABLE([lttng],
AS_HELP_STRING([--enable-lttng], [enable LTTng tracing]))
AC_ARG_WITH([libpam],
AS_HELP_STRING([--with-libpam], [use libpam for PAM support in vtysh]))
AC_ARG_ENABLE([ospfapi],
@ -1851,6 +1853,18 @@ if test "$enable_grpc" = "yes"; then
])
fi
dnl -----
dnl LTTng
dnl -----
if test "$enable_lttng" = "yes"; then
PKG_CHECK_MODULES([UST], [lttng-ust >= 2.12.0], [
AC_DEFINE([HAVE_LTTNG], [1], [Enable LTTng support])
LTTNG=true
], [
AC_MSG_ERROR([configuration specifies --enable-lttng but lttng-ust was not found])
])
fi
dnl ------
dnl ZeroMQ
dnl ------

View file

@ -3,7 +3,7 @@
#
lib_LTLIBRARIES += lib/libfrr.la
lib_libfrr_la_LDFLAGS = -version-info 0:0:0 -Xlinker -e_libfrr_version
lib_libfrr_la_LIBADD = $(LIBCAP) $(UNWIND_LIBS) $(LIBYANG_LIBS) $(LUA_LIB) $(LIBM)
lib_libfrr_la_LIBADD = $(LIBCAP) $(UNWIND_LIBS) $(LIBYANG_LIBS) $(LUA_LIB) $(UST_LIBS) $(LIBM)
lib_libfrr_la_SOURCES = \
lib/agg_table.c \
@ -93,6 +93,7 @@ lib_libfrr_la_SOURCES = \
lib/table.c \
lib/termtable.c \
lib/thread.c \
lib/trace.c \
lib/typerb.c \
lib/typesafe.c \
lib/vector.c \
@ -251,6 +252,7 @@ pkginclude_HEADERS += \
lib/table.h \
lib/termtable.h \
lib/thread.h \
lib/trace.h \
lib/typerb.h \
lib/typesafe.h \
lib/vector.h \

4
lib/trace.c Normal file
View file

@ -0,0 +1,4 @@
#define TRACEPOINT_CREATE_PROBES
#define TRACEPOINT_DEFINE
#include "trace.h"

50
lib/trace.h Normal file
View file

@ -0,0 +1,50 @@
/* Tracing
*
* Copyright (C) 2020 NVIDIA Corporation
* Quentin Young
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; see the file COPYING; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#if !defined(_TRACE_H) || defined(TRACEPOINT_HEADER_MULTI_READ)
#define _TRACE_H
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif /* HAVE_CONFIG_H */
#ifdef HAVE_LTTNG
#undef TRACEPOINT_PROVIDER
#define TRACEPOINT_PROVIDER frr_libfrr
#undef TRACEPOINT_INCLUDE
#define TRACEPOINT_INCLUDE "./trace.h"
/* tracepoint definitions go here */
#include <lttng/tracepoint.h>
#include <lttng/tracepoint-event.h>
#else /* HAVE_LTTNG */
#define tracepoint(...)
#define tracef(...)
#define tracelog(...)
#define tracepoint_enabled(...) true
#endif /* HAVE_LTTNG */
#endif /* _TRACE_H */