(CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_buckets) op:Equal rhs:{(0)} spids:[124])] spids: [124] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:buckets) op:Equal rhs:{(SQ )} spids:[128])] spids: [128] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_power) op:Equal rhs:{(0)} spids:[131])] spids: [131] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:power) op:Equal rhs:{(4)} spids:[135])] spids: [135] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_max) op:Equal rhs:{(0)} spids:[139])] spids: [139] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Star left: (ArithWord w:{(Lit_Digits 1024)}) right: (ArithWord w:{(Lit_Digits 1024)}) ) spids: [144 151] ) } spids: [143] ) ] spids: [143] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(0)} spids:[153])] spids: [153] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(SQ )} spids:[157])] spids: [157] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(0)} spids:[160])] spids: [160] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:debug) op:Equal rhs:{(0)} spids:[164])] spids: [164] ) (C {(trap)} {(SQ <':'>)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)} {(HUP)}) (FuncDef name: usage body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op_id: Redir_DLessDash fd: -1 body: { (DQ ('USAGE: perf-stat-hist [-h] [-b buckets|-P power] [-m max] [-f filter]\n') (' tracepoint variable [seconds]\n') (' -b buckets # specify histogram bucket points\n') (' -P power # power-of (default is 4)\n') (' -m max # max value for power-of\n') (' -f filter # specify a filter \n') (' -h # this usage message\n') (' eg,\n') (' perf-stat-hist syscalls:sys_enter_read count 5\n') (' # read() request histogram, 5 seconds\n') (' perf-stat-hist syscalls:sys_exit_read ret 5\n') (' # read() return histogram, 5 seconds\n') (' perf-stat-hist -P 10 syscalls:sys_exit_read ret 5\n') (' # ... use power-of-10\n') (' perf-stat-hist -P 2 -m 1024 syscalls:sys_exit_read ret 5\n') (' # ... use power-of-2, max 1024\n') (' perf-stat-hist -b ') (Right_DoubleQuote '"') ('10 50 100 500') (Right_DoubleQuote '"') (' syscalls:sys_exit_read ret 5\n') (' # ... histogram based on these bucket ranges\n') (' perf-stat-hist -b 10 syscalls:sys_exit_read ret 5\n') (' # ... bifurcate by the value 10 (lowest overhead)\n') (" perf-stat-hist -f 'rwbs == ") (Right_DoubleQuote '"') (WS) (Right_DoubleQuote '"') ("' block:block_rq_complete nr_sector 5\n") (' # ... synchronous writes histogram, 5 seconds\n') ('\n') ('See the man page and example file for more info.\n') ) } do_expansion: True here_end: END was_filled: True spids: [193] ) (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[196]) ] ) (C {(exit)}) ] spids: [188] ) spids: [184 187] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[246])] ) (C {(exit)} {(1)}) ] spids: [241] ) spids: [237 240] ) (While cond: [ (C {(getopts)} {(b) (Lit_Other ':') (hm) (Lit_Other ':') (P) (Lit_Other ':') (f) (Lit_Other ':')} {(opt)} ) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$opt')} arms: [ (case_arm pat_list: [{(b)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_buckets) op: Equal rhs: {(1)} spids: [292] ) ] spids: [292] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:buckets) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$OPTARG')}])} spids: [296] ) ] spids: [296] ) ] spids: [289 290 301 -1] ) (case_arm pat_list: [{(P)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_power) op: Equal rhs: {(1)} spids: [307] ) ] spids: [307] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:power) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [311] ) ] spids: [311] ) ] spids: [304 305 314 -1] ) (case_arm pat_list: [{(m)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_max) op: Equal rhs: {(1)} spids: [320] ) ] spids: [320] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [324] ) ] spids: [324] ) ] spids: [317 318 327 -1] ) (case_arm pat_list: [{(f)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_filter) op: Equal rhs: {(1)} spids: [333] ) ] spids: [333] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: {(DQ ($ VSub_Name '$OPTARG') (' && '))} spids: [337] ) ] spids: [337] ) ] spids: [330 331 343 -1] ) (case_arm pat_list: [{(h)} {(Lit_Other '?')}] action: [(C {(usage)})] spids: [346 349 353 -1] ) ] spids: [282 286 356] ) ] spids: [279 358] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$OPTIND')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [362 371] ) } ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_Less left: (ArithWord w:{($ VSub_Pound '$#')}) right: (ArithWord w:{(Lit_Digits 2)}) ) ) (C {(usage)}) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tpoint) op:Equal rhs:{($ VSub_Number '$1')} spids:[388])] spids: [388] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:var) op:Equal rhs:{($ VSub_Number '$2')} spids:[394])] spids: [394] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(${ VSub_Number 3)} spids:[400])] spids: [400] ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:opt_buckets) right: (ArithVarRef name:opt_power) ) ) (C {(die)} {(DQ ('ERROR: use either -b or -P'))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:opt_power) right: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:power) right: (ArithWord w:{(Lit_Digits 2)}) ) ) ) (C {(die)} {(DQ ('ERROR: -P power must be 2 or higher'))}) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (SimpleCommand words: [ {(grep)} { (DQ ('^') ($ VSub_Name '$tpoint') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ) } {(/sys/kernel/debug/tracing/available_events)} ] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[469])] ) ] negated: True ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('ERROR: tracepoint ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$tpoint') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' not found. Exiting...') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[478])] ) (AndOr children: [ (DBracket expr: (BoolBinary op_id: BoolBinary_GlobNEqual left: {(DQ ($ VSub_Name '$USER'))} right: {(DQ (root))} ) ) (SimpleCommand words: [{(echo)} {(DQ ('Not root user?'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[508])] ) ] op_id: Op_DAmp ) (C {(exit)} {(1)}) ] spids: [-1 473] ) ] spids: [-1 520] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_buckets))) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:b) op:Equal rhs:{(0)} spids:[540])] spids: [540] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:s) op:Equal rhs:{(1)} spids:[544])] spids: [544] ) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_LessEqual left: (ArithVarRef name:s) right: (ArithVarRef name:max) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:b) op: Equal rhs: {(DQ ($ VSub_Name '$b') (' ') ($ VSub_Name '$s'))} spids: [565] ) ] spids: [565] ) (DParen child: (BinaryAssign op_id: Arith_StarEqual left: (LhsName name:s) right: (ArithVarRef name:power) ) ) ] spids: [562 585] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:buckets) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$b')}])} spids: [588] ) ] spids: [588] ) ] spids: [-1 537] ) ] spids: [-1 593] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:max) op: Equal rhs: { (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name buckets> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [603 609] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [600 615] ) } spids: [599] ) ] spids: [599] ) (DParen child: (BinaryAssign op_id: Arith_Equal left: (LhsName name:max_i) right: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name buckets> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Arith_Star) spids: [625 631] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tpoints) op: Equal rhs: { (DQ ('-e ') ($ VSub_Name '$tpoint') (' --filter ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$filter') (' ') ($ VSub_Name '$var') (' < ') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [649 654] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [639] ) ] spids: [639] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:awkarray) op:Equal rhs:{(SQ )} spids:[658])] spids: [658] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:i) op:Equal rhs:{(0)} spids:[660])] spids: [660] ) (While cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithVarRef name:max_i) ) ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:i) right: (ArithBinary op_id: Arith_LessEqual left: (ArithWord w: { (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr: (ArithWord w:{($ VSub_Name '$i')}) ) spids: [688 693] ) } ) right: (ArithWord w: { (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [697 706] ) } ) ) ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(die)} {(DQ ('ERROR: bucket list must increase in size.'))})] spids: [-1 712] ) ] spids: [-1 722] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tpoints) op: Equal rhs: { (DQ ($ VSub_Name '$tpoints') (' -e ') ($ VSub_Name '$tpoint') (' --filter ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$filter') (' ') ($ VSub_Name '$var') (' >= ') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')})) spids: [736 741] ) (' && ') ) } spids: [725] ) ] spids: [725] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tpoints) op: Equal rhs: { (DQ ($ VSub_Name '$tpoints') (' ') ($ VSub_Name '$var') (' < ') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [752 761] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [746] ) ] spids: [746] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:awkarray) op: Equal rhs: { (DQ ($ VSub_Name '$awkarray') (' buckets[') ($ VSub_Name '$i') (']=') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$i')})) spids: [772 777] ) (';') ) } spids: [766] ) ] spids: [766] ) (DParen child:(UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i))) ] spids: [677 790] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:awkarray) op: Equal rhs: { (DQ ($ VSub_Name '$awkarray') (' buckets[') ($ VSub_Name '$max_i') (']=') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$max_i')})) spids: [798 803] ) (';') ) } spids: [792] ) ] spids: [792] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tpoints) op: Equal rhs: { (DQ ($ VSub_Name '$tpoints') (' -e ') ($ VSub_Name '$tpoint') (' --filter ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ($ VSub_Name '$filter') (' ') ($ VSub_Name '$var') (' >= ') (BracedVarSub token: <VSub_Name buckets> bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$max_i')})) spids: [818 823] ) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } spids: [807] ) ] spids: [807] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:debug)) terminator:<Op_Semi ';'>)] action: [ (C {(echo)} {(buckets) (Lit_Other ':')} { (BracedVarSub token: <VSub_Name buckets> bracket_op: (WholeArray op_id:Arith_Star) spids: [846 851] ) } ) (C {(echo)} {(tracepoints) (Lit_Other ':')} {($ VSub_Name '$tpoints')}) (C {(echo)} {(awkarray) (Lit_Other ':')} { (BracedVarSub token: <VSub_Name awkarray> bracket_op: (WholeArray op_id:Arith_Star) spids: [867 872] ) } ) ] spids: [-1 838] ) ] spids: [-1 874] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:duration)) terminator:<Op_Semi ';'>)] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:etext) op: Equal rhs: {(DQ ('for ') ($ VSub_Name '$duration') (' seconds'))} spids: [893] ) ] spids: [893] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: {(DQ ('sleep ') ($ VSub_Name '$duration'))} spids: [901] ) ] spids: [901] ) ] spids: [-1 890] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:etext) op: Equal rhs: {(DQ ('until Ctrl-C'))} spids: [910] ) ] spids: [910] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:cmd) op: Equal rhs: {(DQ ('sleep 999999'))} spids: [916] ) ] spids: [916] ) ] spids: [907 921] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:p_tpoint) op: Equal rhs: {($ VSub_Name '$tpoint')} spids: [924] ) ] spids: [924] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$filter'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:p_tpoint) op: Equal rhs: { (DQ ($ VSub_Name '$tpoint') (' (Filter: ') (BracedVarSub token: <VSub_Name filter> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{('????')}) spids: [948 952] ) (')') ) } spids: [944] ) ] spids: [944] ) ] spids: [-1 940] ) ] spids: [-1 956] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_buckets)) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('Tracing ') ($ VSub_Name '$p_tpoint') (', specified buckets, ') ($ VSub_Name '$etext') (...) ) } ) ] spids: [-1 969] ) ] else_action: [ (C {(echo)} { (DQ ('Tracing ') ($ VSub_Name '$p_tpoint') (', power-of-') ($ VSub_Name '$power') (', max ') ($ VSub_Name '$max') (', ') ($ VSub_Name '$etext') (...) ) } ) ] spids: [982 999] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:out) op: Equal rhs: {(DQ ('-o /dev/stdout'))} spids: [1005] ) ] spids: [1005] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stat) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [ {(eval)} {(perf)} {(stat)} {($ VSub_Name '$tpoints')} {(-a)} {($ VSub_Name '$out')} {($ VSub_Name '$cmd')} ] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1029])] ) ] ) left_token: <Left_CommandSub '$('> spids: [1014 1031] ) } spids: [1013] ) ] spids: [1013] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_NEqual left: (ArithWord w:{($ VSub_QMark '$?')}) right: (ArithWord w:{(Lit_Digits 0)}) ) ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('ERROR running perf:'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1052])] ) (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$stat'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[1062])] ) (C {(exit)}) ] spids: [-1 1047] ) ] spids: [-1 1072] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:debug)) terminator:<Op_Semi ';'>)] action: [ (C {(echo)} {(raw)} {(output) (Lit_Other ':')}) (C {(echo)} {(DQ ($ VSub_Name '$stat'))}) (C {(echo)}) ] spids: [-1 1085] ) ] spids: [-1 1105] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:most) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$stat'))}) (C {(awk)} {(-v)} {(Lit_VarLike 'tpoint=') ($ VSub_Name '$tpoint')} { (SQ <'\n'> <'\t$2 == tpoint { gsub(/,/, ""); if ($1 > m) { m = $1 } }\n'> <'\tEND { print m }'> ) } ) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [1112 1134] ) } spids: [1111] ) ] spids: [1111] ) (C {(echo)}) (Pipeline children: [ (C {(echo)} {(DQ ($ VSub_Name '$stat'))}) (C {(awk)} {(-v)} {(Lit_VarLike 'tpoint=') ($ VSub_Name '$tpoint')} {(-v)} {(Lit_VarLike 'max_i=') ($ VSub_Name '$max_i')} {(-v)} {(Lit_VarLike 'most=') ($ VSub_Name '$most')} { (SQ <'\n'> <'\tfunction star(sval, smax, swidth) {\n'> <'\t\tstars = ""\n'> <'\t\tif (smax == 0) return ""\n'> <'\t\tfor (si = 0; si < (swidth * sval / smax); si++) {\n'> <'\t\t\tstars = stars "#"\n'> <'\t\t}\n'> <'\t\treturn stars\n'> <'\t}\n'> <'\tBEGIN {\n'> <'\t\t'> ) (DQ ($ VSub_Name '$awkarray')) (SQ <'\n'> <'\t\tprintf(" %-15s: %-8s %s\\n", "Range", "Count",\n'> <'\t\t "Distribution")\n'> <'\t}\n'> <'\t/Performance counter stats/ { i = -1 }\n'> <'\t# reverse order of rule set is important\n'> <'\t{ ok = 0 }\n'> <'\t$2 == tpoint { num = $1; gsub(/,/, "", num); ok = 1 }\n'> <'\tok && i >= max_i {\n'> <'\t\tprintf(" %10d -> %-10s: %-8s |%-38s|\\n", buckets[i],\n'> <'\t\t "", num, star(num, most, 38))\n'> <'\t\tnext\n'> <'\t}\n'> <'\tok && i >= 0 && i < max_i {\n'> <'\t\tprintf(" %10d -> %-10d: %-8s |%-38s|\\n", buckets[i],\n'> <'\t\t buckets[i+1] - 1, num, star(num, most, 38))\n'> <'\t\ti++\n'> <'\t\tnext\n'> <'\t}\n'> <'\tok && i == -1 {\n'> <'\t\tprintf(" %10s -> %-10d: %-8s |%-38s|\\n", "",\n'> <'\t\t buckets[0] - 1, num, star(num, most, 38))\n'> <'\t\ti++\n'> <'\t}\n'> ) } ) ] negated: False ) ] )