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@xxxxxxxxxx> --- 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 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel