[Spice-devel] [PATCH spice-common v2 3/3] build: Introduce 'agent' as an alternative instrumentation library
Kevin Pouget
kpouget at redhat.com
Fri Oct 18 11:37:09 UTC 2019
The 'agent' interface is an experimental instrumentation library for
capturing and sharing Spice performance indicators with an external
agent.
--enable-instrumentation=[c3d-rec/agent/no]
Enable instrumentation [default=no]
Former configuration option '--enable-recorder=c3d' is transformed into
'--enable-instrumentation=c3d-rec'.
Signed-off-by: Kevin Pouget <kpouget at redhat.com>
---
v1->v2: changed 'off' to 'no' for meson build without instrumentation
library
---
common/Makefile.am | 9 ++++++++-
common/meson.build | 8 +++++++-
common/recorder.h | 12 ++++++++----
configure.ac | 2 +-
m4/spice-deps.m4 | 23 +++++++++++++----------
meson.build | 7 +++++--
meson_options.txt | 10 +++++-----
7 files changed, 47 insertions(+), 24 deletions(-)
diff --git a/common/Makefile.am b/common/Makefile.am
index 9638635..fc466bd 100644
--- a/common/Makefile.am
+++ b/common/Makefile.am
@@ -56,7 +56,7 @@ libspice_common_la_SOURCES = \
recorder.h \
$(NULL)
-if ENABLE_RECORDER
+if ENABLE_C3D_RECORDER
libspice_common_la_SOURCES += \
recorder/recorder.c \
recorder/recorder.h \
@@ -65,6 +65,13 @@ libspice_common_la_SOURCES += \
$(NULL)
endif
+if ENABLE_AGENT_INTERFACE
+libspice_common_la_SOURCES += \
+ agent_interface.c \
+ agent_interface.h \
+ $(NULL)
+endif
+
# These 2 files are not build as part of spice-common
# build system, but modules using spice-common will build
# them with the appropriate options. We need to let automake
diff --git a/common/meson.build b/common/meson.build
index 9a2725f..418593e 100644
--- a/common/meson.build
+++ b/common/meson.build
@@ -41,7 +41,7 @@ spice_common_sources = [
'recorder.h'
]
-if get_option('recorder')
+if get_option('instrumentation') == 'c3d-rec'
spice_common_sources += [
'recorder/recorder.c',
'recorder/recorder.h',
@@ -49,6 +49,12 @@ if get_option('recorder')
'recorder/recorder_ring.h'
]
endif
+if get_option('instrumentation') == 'agent'
+ spice_common_sources += [
+ 'agent_interface.c',
+ 'agent_interface.h'
+ ]
+endif
spice_common_lib = static_library('spice-common', spice_common_sources,
install : false,
diff --git a/common/recorder.h b/common/recorder.h
index 7194ab5..f776fd3 100644
--- a/common/recorder.h
+++ b/common/recorder.h
@@ -16,7 +16,14 @@
*/
/* This file include recorder library headers or if disabled provide
* replacement declarations */
-#ifndef ENABLE_RECORDER
+
+#ifdef ENABLE_C3D_RECORDER
+#include <common/recorder/recorder.h>
+
+#elif defined(ENABLE_AGENT_INTERFACE)
+#include <common/agent_interface.h>
+
+#else
#include <stdio.h>
#include <stdint.h>
@@ -69,9 +76,6 @@ static inline void
recorder_dump_on_common_signals(unsigned add, unsigned remove)
{
}
-
-#else
-#include <common/recorder/recorder.h>
#endif
#if !defined(ENABLE_AGENT_INTERFACE)
diff --git a/configure.ac b/configure.ac
index da0a687..9d10287 100644
--- a/configure.ac
+++ b/configure.ac
@@ -41,7 +41,7 @@ AC_ARG_ENABLE([alignment-checks],
AS_IF([test "x$enable_alignment_checks" = "xyes"],
[AC_DEFINE([SPICE_DEBUG_ALIGNMENT], 1, [Enable runtime checks for cast alignment])])
-SPICE_CHECK_RECORDER
+SPICE_CHECK_INSTRUMENTATION
# Checks for libraries
PKG_CHECK_MODULES([PROTOCOL], [spice-protocol >= 0.12.12])
diff --git a/m4/spice-deps.m4 b/m4/spice-deps.m4
index 1214341..34f73e6 100644
--- a/m4/spice-deps.m4
+++ b/m4/spice-deps.m4
@@ -341,17 +341,20 @@ AC_DEFUN([SPICE_CHECK_OPENSSL], [
PKG_CHECK_MODULES(OPENSSL, openssl)
])
-# SPICE_CHECK_RECORDER
+# SPICE_CHECK_INSTRUMENTATION
# -----------------
-# Check for the availability of recorder library.
+# Check for the availability of an instrumentation library.
#------------------
-AC_DEFUN([SPICE_CHECK_RECORDER], [
- AC_ARG_ENABLE([recorder],
- AS_HELP_STRING([--enable-recorder],
- [Enable recorder instrumentation @<:@default=no@:>@]),
+AC_DEFUN([SPICE_CHECK_INSTRUMENTATION], [
+ AC_ARG_ENABLE([instrumentation],
+ AS_HELP_STRING([--enable-instrumentation=@<:@c3d-rec/agent/no@:>@],
+ [Enable instrumentation @<:@default=no@:>@]),
[],
- enable_recorder="no")
- AS_IF([test "$enable_recorder" = "yes"],
- AC_DEFINE([ENABLE_RECORDER], [1], [Define if recorder instrumentation is enabled]))
- AM_CONDITIONAL([ENABLE_RECORDER],[test "$enable_recorder" = "yes"])
+ enable_instrumentation="no")
+ AS_IF([test "$enable_instrumentation" = "c3d-rec"],
+ AC_DEFINE([ENABLE_C3D_RECORDER], [1], [Define if c3d recorder instrumentation is enabled]))
+ AS_IF([test "$enable_instrumentation" = "agent"],
+ AC_DEFINE([ENABLE_AGENT_INTERFACE], [1], [Define if the agent-interface instrumentation is enabled]))
+ AM_CONDITIONAL([ENABLE_C3D_RECORDER],[test "$enable_instrumentation" = "c3d-rec"])
+ AM_CONDITIONAL([ENABLE_AGENT_INTERFACE],[test "$enable_instrumentation" = "agent"])
])
diff --git a/meson.build b/meson.build
index 694119d..064c56e 100644
--- a/meson.build
+++ b/meson.build
@@ -36,8 +36,11 @@ if host_machine.endian() == 'big'
spice_common_config_data.set('WORDS_BIGENDIAN', '1')
endif
-if get_option('recorder')
- spice_common_config_data.set('ENABLE_RECORDER', '1')
+if get_option('instrumentation') == 'c3d-rec'
+ spice_common_config_data.set('ENABLE_C3D_RECORDER', '1')
+endif
+if get_option('instrumentation') == 'agent'
+ spice_common_config_data.set('ENABLE_AGENT_INTERFACE', '1')
endif
spice_common_generate_code = get_option('generate-code')
diff --git a/meson_options.txt b/meson_options.txt
index c982736..5067600 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -21,11 +21,11 @@ option('opus',
yield : true,
description: 'Enable Opus audio codec')
-option('recorder',
- type : 'boolean',
- value : false,
- yield : true,
- description: 'Enable recorder instrumentation')
+option('instrumentation',
+ type : 'combo',
+ value : 'no',
+ choices : ['c3d-rec', 'agent', 'no'],
+ description: 'Enable instrumentation')
option('smartcard',
type : 'feature',
--
2.21.0
More information about the Spice-devel
mailing list