New trace-event backend: stderr

This backend sends trace events to standard error output during the emulation.

Also add a "--list-backends" option to tracetool, so configure script can
display the list of available backends.

Signed-off-by: Fabien Chouteau <chouteau@adacore.com>
Acked-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
master
Fabien Chouteau 2011-01-27 10:24:41 +01:00 committed by Blue Swirl
parent 491e2a338f
commit 320fba2a1f
3 changed files with 65 additions and 3 deletions

3
configure vendored
View File

@ -907,7 +907,8 @@ echo " --enable-docs enable documentation build"
echo " --disable-docs disable documentation build" echo " --disable-docs disable documentation build"
echo " --disable-vhost-net disable vhost-net acceleration support" echo " --disable-vhost-net disable vhost-net acceleration support"
echo " --enable-vhost-net enable vhost-net acceleration support" echo " --enable-vhost-net enable vhost-net acceleration support"
echo " --enable-trace-backend=B Trace backend nop simple ust dtrace" echo " --enable-trace-backend=B Set trace backend"
echo " Available backends:" $("$source_path"/scripts/tracetool --list-backends)
echo " --with-trace-file=NAME Full PATH,NAME of file to store traces" echo " --with-trace-file=NAME Full PATH,NAME of file to store traces"
echo " Default:trace-<pid>" echo " Default:trace-<pid>"
echo " --disable-spice disable spice" echo " --disable-spice disable spice"

View File

@ -133,6 +133,11 @@ source tree. It may not be as powerful as platform-specific or third-party
trace backends but it is portable. This is the recommended trace backend trace backends but it is portable. This is the recommended trace backend
unless you have specific needs for more advanced backends. unless you have specific needs for more advanced backends.
=== Stderr ===
The "stderr" backend sends trace events directly to standard error output
during emulation.
==== Monitor commands ==== ==== Monitor commands ====
* info trace * info trace

View File

@ -13,12 +13,13 @@ set -f
usage() usage()
{ {
cat >&2 <<EOF cat >&2 <<EOF
usage: $0 [--nop | --simple | --ust] [-h | -c] usage: $0 [--nop | --simple | --stderr | --ust | --dtrace] [-h | -c]
Generate tracing code for a file on stdin. Generate tracing code for a file on stdin.
Backends: Backends:
--nop Tracing disabled --nop Tracing disabled
--simple Simple built-in backend --simple Simple built-in backend
--stderr Stderr built-in backend
--ust LTTng User Space Tracing backend --ust LTTng User Space Tracing backend
--dtrace DTrace/SystemTAP backend --dtrace DTrace/SystemTAP backend
@ -236,6 +237,56 @@ linetoc_end_simple()
EOF EOF
} }
#STDERR
linetoh_begin_stderr()
{
cat <<EOF
#include <stdio.h>
EOF
}
linetoh_stderr()
{
local name args argnames argc fmt
name=$(get_name "$1")
args=$(get_args "$1")
argnames=$(get_argnames "$1" ",")
argc=$(get_argc "$1")
fmt=$(get_fmt "$1")
if [ "$argc" -gt 0 ]; then
argnames=", $argnames"
fi
cat <<EOF
static inline void trace_$name($args)
{
fprintf(stderr, "$name $fmt\n" $argnames);
}
EOF
}
linetoh_end_stderr()
{
return
}
linetoc_begin_stderr()
{
return
}
linetoc_stderr()
{
return
}
linetoc_end_stderr()
{
return
}
#END OF STDERR
# Clean up after UST headers which pollute the namespace # Clean up after UST headers which pollute the namespace
ust_clean_namespace() { ust_clean_namespace() {
cat <<EOF cat <<EOF
@ -546,7 +597,7 @@ targetarch=
until [ -z "$1" ] until [ -z "$1" ]
do do
case "$1" in case "$1" in
"--nop" | "--simple" | "--ust" | "--dtrace") backend="${1#--}" ;; "--nop" | "--simple" | "--stderr" | "--ust" | "--dtrace") backend="${1#--}" ;;
"--binary") shift ; binary="$1" ;; "--binary") shift ; binary="$1" ;;
"--target-arch") shift ; targetarch="$1" ;; "--target-arch") shift ; targetarch="$1" ;;
@ -557,6 +608,11 @@ do
"--check-backend") exit 0 ;; # used by ./configure to test for backend "--check-backend") exit 0 ;; # used by ./configure to test for backend
"--list-backends") # used by ./configure to list available backends
echo "nop simple stderr ust dtrace"
exit 0
;;
*) *)
usage;; usage;;
esac esac