About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / trace / function-graph-fold.vim




Custom Search

Based on kernel version 3.16. Page generated on 2014-08-06 21:41 EST.

1	" Enable folding for ftrace function_graph traces.
2	"
3	" To use, :source this file while viewing a function_graph trace, or use vim's
4	" -S option to load from the command-line together with a trace.  You can then
5	" use the usual vim fold commands, such as "za", to open and close nested
6	" functions.  While closed, a fold will show the total time taken for a call,
7	" as would normally appear on the line with the closing brace.  Folded
8	" functions will not include finish_task_switch(), so folding should remain
9	" relatively sane even through a context switch.
10	"
11	" Note that this will almost certainly only work well with a
12	" single-CPU trace (e.g. trace-cmd report --cpu 1).
13	
14	function! FunctionGraphFoldExpr(lnum)
15	  let line = getline(a:lnum)
16	  if line[-1:] == '{'
17	    if line =~ 'finish_task_switch() {$'
18	      return '>1'
19	    endif
20	    return 'a1'
21	  elseif line[-1:] == '}'
22	    return 's1'
23	  else
24	    return '='
25	  endif
26	endfunction
27	
28	function! FunctionGraphFoldText()
29	  let s = split(getline(v:foldstart), '|', 1)
30	  if getline(v:foldend+1) =~ 'finish_task_switch() {$'
31	    let s[2] = ' task switch  '
32	  else
33	    let e = split(getline(v:foldend), '|', 1)
34	    let s[2] = e[2]
35	  endif
36	  return join(s, '|')
37	endfunction
38	
39	setlocal foldexpr=FunctionGraphFoldExpr(v:lnum)
40	setlocal foldtext=FunctionGraphFoldText()
41	setlocal foldcolumn=12
42	setlocal foldmethod=expr
Hide Line Numbers
About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Information is copyright its respective author. All material is available from the Linux Kernel Source distributed under a GPL License. This page is provided as a free service by mjmwired.net.