(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 ) ] )