mirror of https://github.com/xqemu/xqemu.git
trace: generalize the "property" concept in the trace-events file
This adds/modifies the following functions: * get_name: Get _only_ the event name * has_property: Return whether an event has a property (keyword before the event name) Signed-off-by: Lluís Vilanova <vilanova@ac.upc.edu>
This commit is contained in:
parent
e4858974ec
commit
49926043c1
|
@ -103,7 +103,7 @@ portability macros, ensure they are preceded and followed by double quotes:
|
||||||
4. Name trace events after their function. If there are multiple trace events
|
4. Name trace events after their function. If there are multiple trace events
|
||||||
in one function, append a unique distinguisher at the end of the name.
|
in one function, append a unique distinguisher at the end of the name.
|
||||||
|
|
||||||
5. Declare trace events with the "disable" keyword. Some trace events can
|
5. Declare trace events with the "disable" property. Some trace events can
|
||||||
produce a lot of output and users are typically only interested in a subset
|
produce a lot of output and users are typically only interested in a subset
|
||||||
of trace events. Marking trace events disabled by default saves the user
|
of trace events. Marking trace events disabled by default saves the user
|
||||||
from having to manually disable noisy trace events.
|
from having to manually disable noisy trace events.
|
||||||
|
|
|
@ -43,7 +43,26 @@ EOF
|
||||||
# Get the name of a trace event
|
# Get the name of a trace event
|
||||||
get_name()
|
get_name()
|
||||||
{
|
{
|
||||||
echo ${1%%\(*}
|
local name
|
||||||
|
name=${1%%\(*}
|
||||||
|
echo "${name##* }"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Get the given property of a trace event
|
||||||
|
# 1: trace-events line
|
||||||
|
# 2: property name
|
||||||
|
# -> return 0 if property is present, or 1 otherwise
|
||||||
|
has_property()
|
||||||
|
{
|
||||||
|
local props prop
|
||||||
|
props=${1%%\(*}
|
||||||
|
props=${props% *}
|
||||||
|
for prop in $props; do
|
||||||
|
if [ "$prop" = "$2" ]; then
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the argument list of a trace event, including types and names
|
# Get the argument list of a trace event, including types and names
|
||||||
|
@ -101,20 +120,6 @@ get_fmt()
|
||||||
echo "$fmt"
|
echo "$fmt"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get the state of a trace event
|
|
||||||
get_state()
|
|
||||||
{
|
|
||||||
local str disable state
|
|
||||||
str=$(get_name "$1")
|
|
||||||
disable=${str##disable }
|
|
||||||
if [ "$disable" = "$str" ] ; then
|
|
||||||
state=1
|
|
||||||
else
|
|
||||||
state=0
|
|
||||||
fi
|
|
||||||
echo "$state"
|
|
||||||
}
|
|
||||||
|
|
||||||
linetoh_begin_nop()
|
linetoh_begin_nop()
|
||||||
{
|
{
|
||||||
return
|
return
|
||||||
|
@ -174,14 +179,10 @@ cast_args_to_uint64_t()
|
||||||
|
|
||||||
linetoh_simple()
|
linetoh_simple()
|
||||||
{
|
{
|
||||||
local name args argc trace_args state
|
local name args argc trace_args
|
||||||
name=$(get_name "$1")
|
name=$(get_name "$1")
|
||||||
args=$(get_args "$1")
|
args=$(get_args "$1")
|
||||||
argc=$(get_argc "$1")
|
argc=$(get_argc "$1")
|
||||||
state=$(get_state "$1")
|
|
||||||
if [ "$state" = "0" ]; then
|
|
||||||
name=${name##disable }
|
|
||||||
fi
|
|
||||||
|
|
||||||
trace_args="$simple_event_num"
|
trace_args="$simple_event_num"
|
||||||
if [ "$argc" -gt 0 ]
|
if [ "$argc" -gt 0 ]
|
||||||
|
@ -222,9 +223,10 @@ linetoc_simple()
|
||||||
{
|
{
|
||||||
local name state
|
local name state
|
||||||
name=$(get_name "$1")
|
name=$(get_name "$1")
|
||||||
state=$(get_state "$1")
|
if has_property "$1" "disable"; then
|
||||||
if [ "$state" = "0" ] ; then
|
state="0"
|
||||||
name=${name##disable }
|
else
|
||||||
|
state="1"
|
||||||
fi
|
fi
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
{.tp_name = "$name", .state=$state},
|
{.tp_name = "$name", .state=$state},
|
||||||
|
@ -379,14 +381,10 @@ EOF
|
||||||
|
|
||||||
linetoh_dtrace()
|
linetoh_dtrace()
|
||||||
{
|
{
|
||||||
local name args argnames state nameupper
|
local name args argnames nameupper
|
||||||
name=$(get_name "$1")
|
name=$(get_name "$1")
|
||||||
args=$(get_args "$1")
|
args=$(get_args "$1")
|
||||||
argnames=$(get_argnames "$1", ",")
|
argnames=$(get_argnames "$1", ",")
|
||||||
state=$(get_state "$1")
|
|
||||||
if [ "$state" = "0" ] ; then
|
|
||||||
name=${name##disable }
|
|
||||||
fi
|
|
||||||
|
|
||||||
nameupper=`echo $name | tr '[:lower:]' '[:upper:]'`
|
nameupper=`echo $name | tr '[:lower:]' '[:upper:]'`
|
||||||
|
|
||||||
|
@ -430,13 +428,9 @@ EOF
|
||||||
|
|
||||||
linetod_dtrace()
|
linetod_dtrace()
|
||||||
{
|
{
|
||||||
local name args state
|
local name args
|
||||||
name=$(get_name "$1")
|
name=$(get_name "$1")
|
||||||
args=$(get_args "$1")
|
args=$(get_args "$1")
|
||||||
state=$(get_state "$1")
|
|
||||||
if [ "$state" = "0" ] ; then
|
|
||||||
name=${name##disable }
|
|
||||||
fi
|
|
||||||
|
|
||||||
# DTrace provider syntax expects foo() for empty
|
# DTrace provider syntax expects foo() for empty
|
||||||
# params, not foo(void)
|
# params, not foo(void)
|
||||||
|
@ -464,14 +458,10 @@ linetostap_begin_dtrace()
|
||||||
|
|
||||||
linetostap_dtrace()
|
linetostap_dtrace()
|
||||||
{
|
{
|
||||||
local i arg name args arglist state
|
local i arg name args arglist
|
||||||
name=$(get_name "$1")
|
name=$(get_name "$1")
|
||||||
args=$(get_args "$1")
|
args=$(get_args "$1")
|
||||||
arglist=$(get_argnames "$1", "")
|
arglist=$(get_argnames "$1", "")
|
||||||
state=$(get_state "$1")
|
|
||||||
if [ "$state" = "0" ] ; then
|
|
||||||
name=${name##disable }
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Define prototype for probe arguments
|
# Define prototype for probe arguments
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
|
@ -517,9 +507,12 @@ convert()
|
||||||
test -z "${str%%#*}" && continue
|
test -z "${str%%#*}" && continue
|
||||||
|
|
||||||
# Process the line. The nop backend handles disabled lines.
|
# Process the line. The nop backend handles disabled lines.
|
||||||
disable=${str%%disable *}
|
disable="0"
|
||||||
|
if has_property "$str" "disable"; then
|
||||||
|
disable="1"
|
||||||
|
fi
|
||||||
echo
|
echo
|
||||||
if test -z "$disable"; then
|
if [ "$disable" = "1" ]; then
|
||||||
# Pass the disabled state as an arg for the simple
|
# Pass the disabled state as an arg for the simple
|
||||||
# or DTrace backends which handle it dynamically.
|
# or DTrace backends which handle it dynamically.
|
||||||
# For all other backends, call lineto$1_nop()
|
# For all other backends, call lineto$1_nop()
|
||||||
|
|
Loading…
Reference in New Issue