Re: [PATCH v13 04/23] perf config: Document variables for 'annotate' section in man page

2016-01-21 Thread Taeung Song

Hi, Arnaldo

Sorry for my tardy response.

On 01/21/2016 11:45 PM, Arnaldo Carvalho de Melo wrote:

Em Fri, Jan 08, 2016 at 08:39:34PM +0900, Taeung Song escreveu:

Explain 'annotate' section and its variables.

'hide_src_code', 'use_offset', 'jump_arrows',
'show_linenr', 'show_nr_jump' and 'show_total_period'.

Cc: Namhyung Kim 
Cc: Jiri Olsa 
Signed-off-by: Taeung Song 
---
  tools/perf/Documentation/perf-config.txt | 110 +++
  1 file changed, 110 insertions(+)

diff --git a/tools/perf/Documentation/perf-config.txt 
b/tools/perf/Documentation/perf-config.txt
index 8835215..85b811f 100644
--- a/tools/perf/Documentation/perf-config.txt
+++ b/tools/perf/Documentation/perf-config.txt
@@ -168,6 +168,116 @@ buildid.*::
cache location, or to disable it altogether. If you want to 
disable it,
set buildid.dir to /dev/null. The default is $HOME/.debug


I suggest you document here also the hotkeys that are available in the
TUI to toggle those knobs, i.e. please go to the annotate browser and
press 'h', you'll get the list of hotkeys, this way, for someone reading
the man page the information will know that this can be done
interactively, not just by changing a config file.



I don't know whether this patch was applied
as it is, because of my tardy response or not..
I saw this patch was included in [GIT PULL] mail.

Would you mind if I add this hotkeys information
into perf-config documentation as new patchset ?


Also it would be interesting to change the annotate/top/report man page
to point to this documentation.



Ok, I understood that add 'linkperf:perf-config[1]' to section
'SEE ALSO' on the annotate/top/report man page.
Is it right ?

If it isn't, add a sentence such as
'Please refer to the perf-config manual.'
to the annotate/top/report documentation ?


But this can be done on top, I'm doing quick text flowing/grammar fixes
and applying as much as I can from this patchkit, thanks for continuing
work on it.


Although it is a minor contribution,
I'm so glad I could contribute. :-)

Thanks,
Taeung


Re: [PATCH v13 04/23] perf config: Document variables for 'annotate' section in man page

2016-01-21 Thread Arnaldo Carvalho de Melo
Em Fri, Jan 08, 2016 at 08:39:34PM +0900, Taeung Song escreveu:
> Explain 'annotate' section and its variables.
> 
> 'hide_src_code', 'use_offset', 'jump_arrows',
> 'show_linenr', 'show_nr_jump' and 'show_total_period'.
> 
> Cc: Namhyung Kim 
> Cc: Jiri Olsa 
> Signed-off-by: Taeung Song 
> ---
>  tools/perf/Documentation/perf-config.txt | 110 
> +++
>  1 file changed, 110 insertions(+)
> 
> diff --git a/tools/perf/Documentation/perf-config.txt 
> b/tools/perf/Documentation/perf-config.txt
> index 8835215..85b811f 100644
> --- a/tools/perf/Documentation/perf-config.txt
> +++ b/tools/perf/Documentation/perf-config.txt
> @@ -168,6 +168,116 @@ buildid.*::
>   cache location, or to disable it altogether. If you want to 
> disable it,
>   set buildid.dir to /dev/null. The default is $HOME/.debug

I suggest you document here also the hotkeys that are available in the
TUI to toggle those knobs, i.e. please go to the annotate browser and
press 'h', you'll get the list of hotkeys, this way, for someone reading
the man page the information will know that this can be done
interactively, not just by changing a config file.

Also it would be interesting to change the annotate/top/report man page
to point to this documentation.

But this can be done on top, I'm doing quick text flowing/grammar fixes
and applying as much as I can from this patchkit, thanks for continuing
work on it.

- Arnaldo
  
> +annotate.*::
> + These options work only for TUI.
> + These are in control of addresses, jump function, source code
> + in lines of assembly code from a specific program.
> +
> + annotate.hide_src_code::
> + If a program which is analyzed has source code,
> + this option lets 'annotate' print a list of assembly code with 
> the source code.
> + For example, let's see a part of a program. There're four lines.
> + If this option is 'true', they can be printed
> + without source code from a program as below.
> +
> + │push   %rbp
> + │mov%rsp,%rbp
> + │sub$0x10,%rsp
> + │mov(%rdi),%rdx
> +
> + But if this option is 'false', source code of the part
> + can be also printed as below. Default is 'false'.
> +
> + │  struct rb_node *rb_next(const struct rb_node *node)
> + │  {
> + │push   %rbp
> + │mov%rsp,%rbp
> + │sub$0x10,%rsp
> + │  struct rb_node *parent;
> + │
> + │  if (RB_EMPTY_NODE(node))
> + │mov(%rdi),%rdx
> + │  return n;
> +
> +annotate.use_offset::
> + Basing on a first address of a loaded function, offset can be 
> used.
> + Instead of using original addresses of assembly code,
> + addresses subtracted from a base address can be printed.
> + Let's illustrate an example.
> + If a base address is 0X81624d50 as below,
> +
> + 81624d50 
> +
> + an address on assembly code has a specific absolute address as 
> below
> +
> + 816250b8:│  mov0x8(%r14),%rdi
> +
> + but if use_offset is 'true', an address subtracted from a base 
> address is printed.
> + Default is true. This option is only applied to TUI.
> +
> +  368:│  mov0x8(%r14),%rdi
> +
> + annotate.jump_arrows::
> + There can be jump instruction among assembly code.
> + Depending on a boolean value of jump_arrows,
> + arrows can be printed or not which represent
> + where do the instruction jump into as below.
> +
> + │ ┌──jmp1333
> + │ │  xchg   %ax,%ax
> + │1330:│  mov%r15,%r10
> + │1333:└─→cmp%r15,%r14
> +
> + If jump_arrow is 'false', the arrows isn't printed as below.
> + Default is 'false'.
> +
> + │  ↓ jmp1333
> + │xchg   %ax,%ax
> + │1330:   mov%r15,%r10
> + │1333:   cmp%r15,%r14
> +
> +annotate.show_linenr::
> + When showing source code if this option is 'true',
> + line numbers are printed as below.
> +
> + │1628 if (type & PERF_SAMPLE_IDENTIFIER) {
> + │ ↓ jne508
> + │1628 data->id = *array;
> + │1629 array++;
> + │1630 }
> +
> + However if this option is 'false', they aren't printed as below.
> + Default is 'false'.
> +
> + │ if (type & PERF_SAMPLE_IDENTIFIER) {
> + │ ↓ jne508
> + │