From: Masami Hiramatsu <mhiramat@kernel.org> To: Steven Rostedt <rostedt@goodmis.org> Cc: linux-kernel@vger.kernel.org, Tom Zanussi <zanussi@kernel.org>, Masami Hiramatsu <mhiramat@kernel.org> Subject: [PATCH v4 08/10] tools/bootconfig: Add histogram syntax support to bconf2ftrace.sh Date: Tue, 10 Aug 2021 11:08:06 +0900 [thread overview] Message-ID: <162856128672.203126.8240335908303312607.stgit@devnote2> (raw) In-Reply-To: <162856122550.203126.17607127017097781682.stgit@devnote2> Add histogram syntax support to bconf2ftrace.sh script. Signed-off-by: Masami Hiramatsu <mhiramat@kernel.org> --- Changes in v4: - Fix to remove spaces in the expression for the variables. --- tools/bootconfig/scripts/bconf2ftrace.sh | 88 ++++++++++++++++++++++++++++++ tools/bootconfig/scripts/xbc.sh | 4 + 2 files changed, 90 insertions(+), 2 deletions(-) diff --git a/tools/bootconfig/scripts/bconf2ftrace.sh b/tools/bootconfig/scripts/bconf2ftrace.sh index 651049c782c0..850c2073433e 100755 --- a/tools/bootconfig/scripts/bconf2ftrace.sh +++ b/tools/bootconfig/scripts/bconf2ftrace.sh @@ -94,6 +94,92 @@ compose_synth() { # event_name branch xbc_get_val $2 | while read field; do echo -n "$field; "; done } +print_hist_array() { # prefix key + __sep="=" + if xbc_has_key ${1}.${2}; then + echo -n ":$2" + xbc_get_val ${1}.${2} | while read field; do + echo -n "$__sep$field"; __sep="," + done + fi +} + +print_hist_action_array() { # prefix key + __sep="(" + echo -n ".$2" + xbc_get_val ${1}.${2} | while read field; do + echo -n "$__sep$field"; __sep="," + done + echo -n ")" +} + +print_hist_one_action() { # prefix handler param + echo -n ":${2}("`xbc_get_val ${1}.${3}`")" + if xbc_has_key "${1}.trace"; then + print_hist_action_array ${1} "trace" + elif xbc_has_key "${1}.save"; then + print_hist_action_array ${1} "save" + elif xbc_has_key "${1}.snapshot"; then + echo -n ".snapshot()" + fi +} + +print_hist_actions() { # prefix handler param + for __hdr in `xbc_subkeys ${1}.${2} 1 ".[0-9]"`; do + print_hist_one_action ${1}.${2}.$__hdr ${2} ${3} + done + if xbc_has_key ${1}.${2}.${3} ; then + print_hist_one_action ${1}.${2} ${2} ${3} + fi +} + +print_hist_var() { # prefix varname + echo -n ":${2}="`xbc_get_val ${1}.var.${2} | tr -d [:space:]` +} + +print_one_histogram() { # prefix + echo -n "hist" + print_hist_array $1 "keys" + print_hist_array $1 "values" + print_hist_array $1 "sort" + if xbc_has_key "${1}.size"; then + echo -n ":size="`xbc_get_val ${1}.size` + fi + if xbc_has_key "${1}.name"; then + echo -n ":name="`xbc_get_val ${1}.name` + fi + for __var in `xbc_subkeys "${1}.var" 1`; do + print_hist_var ${1} ${__var} + done + if xbc_has_key "${1}.pause"; then + echo -n ":pause" + elif xbc_has_key "${1}.continue"; then + echo -n ":continue" + elif xbc_has_key "${1}.clear"; then + echo -n ":clear" + fi + print_hist_actions ${1} "onmax" "var" + print_hist_actions ${1} "onchange" "var" + print_hist_actions ${1} "onmatch" "event" + + if xbc_has_key "${1}.filter"; then + echo -n " if "`xbc_get_val ${1}.filter` + fi +} + +setup_one_histogram() { # prefix trigger-file + run_cmd "echo '`print_one_histogram ${1}`' >> ${2}" +} + +setup_histograms() { # prefix trigger-file + for __hist in `xbc_subkeys ${1} 1 ".[0-9]"`; do + setup_one_histogram ${1}.$__hist ${2} + done + if xbc_has_key ${1}.keys; then + setup_one_histogram ${1} ${2} + fi +} + setup_event() { # prefix group event [instance] branch=$1.$2.$3 if [ "$4" ]; then @@ -121,6 +207,8 @@ setup_event() { # prefix group event [instance] set_value_of ${branch}.filter ${eventdir}/filter set_array_of ${branch}.actions ${eventdir}/trigger + setup_histograms ${branch}.hist ${eventdir}/trigger + if xbc_has_key ${branch}.enable; then run_cmd "echo 1 > ${eventdir}/enable" fi diff --git a/tools/bootconfig/scripts/xbc.sh b/tools/bootconfig/scripts/xbc.sh index b8c84e654556..1f0ebf50dd2d 100644 --- a/tools/bootconfig/scripts/xbc.sh +++ b/tools/bootconfig/scripts/xbc.sh @@ -49,8 +49,8 @@ xbc_has_branch() { # prefix-key grep -q "^$1" $XBC_TMPFILE } -xbc_subkeys() { # prefix-key depth +xbc_subkeys() { # prefix-key depth [subkey-pattern] __keys=`echo $1 | sed "s/\./ /g"` __s=`nr_args $__keys` - grep "^$1" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq + grep "^$1$3" $XBC_TMPFILE | cut -d= -f1| cut -d. -f$((__s + 1))-$((__s + $2)) | uniq }
next prev parent reply other threads:[~2021-08-10 2:08 UTC|newest] Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-10 2:07 [PATCH v4 00/10] tracing/boot: Add histogram syntax support in boot-time tracing Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 01/10] tracing/boot: Fix a hist trigger dependency for boot time tracing Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 02/10] tracing/boot: Add per-event histogram action options Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 03/10] tracing/boot: Support multiple handlers for per-event histogram Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 04/10] tracing/boot: Support multiple histograms for each event Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 05/10] tracing/boot: Show correct histogram error command Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 06/10] Documentation: tracing: Add histogram syntax to boot-time tracing Masami Hiramatsu 2021-08-10 2:07 ` [PATCH v4 07/10] tools/bootconfig: Support per-group/all event enabling option Masami Hiramatsu 2021-08-14 3:31 ` Masami Hiramatsu 2021-08-16 15:39 ` Steven Rostedt 2021-08-10 2:08 ` Masami Hiramatsu [this message] 2021-08-10 2:08 ` [PATCH v4 09/10] tools/bootconfig: Use per-group/all enable option in ftrace2bconf script Masami Hiramatsu 2021-08-10 2:08 ` [PATCH v4 10/10] bootconfig/tracing/ktest: Update ktest example for boot-time tracing Masami Hiramatsu
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=162856128672.203126.8240335908303312607.stgit@devnote2 \ --to=mhiramat@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=rostedt@goodmis.org \ --cc=zanussi@kernel.org \ --subject='Re: [PATCH v4 08/10] tools/bootconfig: Add histogram syntax support to bconf2ftrace.sh' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.