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
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.