(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tracing) op: Equal rhs: {(/sys/kernel/debug/tracing)} spids: [157] ) ] spids: [157] ) (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flock) op: Equal rhs: {(/var/tmp/.ftrace-lock)} spids: [160] ) ] spids: [160] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(0)} spids:[164])] spids: [164] ) ] ) (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[167])] spids: [167] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:duration) op: Equal rhs: {(EmptyPart)} spids: [171] ) ] spids: [171] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[174])] spids: [174] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(EmptyPart)} spids:[178])] spids: [178] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[181])] spids: [181] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(EmptyPart)} spids:[185])] spids: [185] ) ] ) (CommandList children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(0)} spids:[187])] spids: [187] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(EmptyPart)} spids:[191])] spids: [191] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_view) op:Equal rhs:{(0)} spids:[194])] spids: [194] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_headers) op:Equal rhs:{(0)} spids:[198])] spids: [198] ) terminator: <Op_Semi ';'> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_stack) op:Equal rhs:{(0)} spids:[202])] spids: [202] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:dmesg) op:Equal rhs:{(2)} spids:[206])] spids: [206] ) ] ) (C {(trap)} {(SQ <':'>)} {(INT)} {(QUIT)} {(TERM)} {(PIPE)} {(HUP)}) (FuncDef name: usage body: (BraceGroup children: [ (SimpleCommand words: [{(cat)}] redirects: [ (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(END)} here_end_span_id: 270 stdin_parts: [ ('USAGE: tpoint [-hHsv] [-d secs] [-p PID] [-L TID] tracepoint [filter]\n') (' tpoint -l\n') (' -d seconds # trace duration, and use buffers\n') (' -p PID # PID to match on event\n') (' -L TID # thread id to match on event\n') (" -v # view format file (don't trace)\n") (' -H # include column headers\n') (' -l # list all tracepoints\n') (' -s # show kernel stack traces\n') (' -h # this usage message\n') (' eg,\n') (' tpoint -l | grep open\n') (' # find tracepoints containing ') (Right_DoubleQuote '"') (open) (Right_DoubleQuote '"') ('\n') (' tpoint syscalls:sys_enter_open\n') (' # trace open() syscall entry\n') (' tpoint block:block_rq_issue\n') (' # trace block I/O issue\n') (' tpoint -s block:block_rq_issue\n') (' # show kernel stacks\n') ('\n') ('See the man page and example file for more info.\n') ] ) (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)}) ] ) (ControlFlow token:<ControlFlow_Exit exit>) ] spids: [233] ) spids: [229 232] ) (FuncDef name: warn body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children:[(C {(eval)} {(DQ ($ VSub_At '$@'))})] negated:T) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('WARNING: command failed ') (EscapedLiteralPart token: <Lit_EscapedChar '\\"'> ) ($ VSub_At '$@') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) ] spids: [16777215 295] ) ] spids: [16777215 311] ) ] spids: [281] ) spids: [277 280] ) (FuncDef name: end body: (BraceGroup children: [ (SimpleCommand words: [{(echo)}] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) (SimpleCommand words: [{(echo)} {(DQ ('Ending tracing...'))}] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) (C {(cd)} {($ VSub_Name '$tracing')}) (C {(warn)} {(DQ ('echo 0 > ') ($ VSub_Name '$tdir') (/enable))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_filter) spids:[359 364]) terminator: <Op_Semi ';'> ) ] action: [(C {(warn)} {(DQ ('echo 0 > ') ($ VSub_Name '$tdir') (/filter))})] spids: [16777215 367] ) ] spids: [16777215 379] ) (AndOr ops: [Op_DAmp] children: [ (DParen child:(ArithVarRef name:opt_stack) spids:[382 387]) (C {(warn)} {(DQ ('echo 0 > options/stacktrace'))}) ] ) (C {(warn)} {(DQ ('echo > trace'))}) (AndOr ops: [Op_DAmp] children: [ (DParen child:(ArithVarRef name:wroteflock) spids:[405 410]) (C {(warn)} {(DQ ('rm ') ($ VSub_Name '$flock'))}) ] ) ] spids: [320] ) spids: [316 319] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [428] ) spids: [424 427] ) (FuncDef name: edie body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At '$@'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (C {(end)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [452] ) spids: [448 451] ) (WhileUntil keyword: <KW_While while> cond: [ (C {(getopts)} {(d) (Lit_Other ':') (hHlp) (Lit_Other ':') (L) (Lit_Other ':') (sv)} {(opt)}) ] body: (DoGroup children: [ (Case to_match: {($ VSub_Name '$opt')} arms: [ (case_arm pat_list: [{(d)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_duration) op: Equal rhs: {(1)} spids: [518] ) ] spids: [518] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:duration) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [522] ) ] spids: [522] ) ] spids: [515 516 525 16777215] ) (case_arm pat_list: [{(p)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_pid) op: Equal rhs: {(1)} spids: [531] ) ] spids: [531] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [535] ) ] spids: [535] ) ] spids: [528 529 538 16777215] ) (case_arm pat_list: [{(L)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_tid) op: Equal rhs: {(1)} spids: [544] ) ] spids: [544] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {($ VSub_Name '$OPTARG')} spids: [548] ) ] spids: [548] ) ] spids: [541 542 551 16777215] ) (case_arm pat_list: [{(H)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_headers) op: Equal rhs: {(1)} spids: [557] ) ] spids: [557] ) ] spids: [554 555 560 16777215] ) (case_arm pat_list: [{(l)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_list) op: Equal rhs: {(1)} spids: [566] ) ] spids: [566] ) ] spids: [563 564 569 16777215] ) (case_arm pat_list: [{(s)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_stack) op: Equal rhs: {(1)} spids: [575] ) ] spids: [575] ) ] spids: [572 573 578 16777215] ) (case_arm pat_list: [{(v)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_view) op: Equal rhs: {(1)} spids: [584] ) ] spids: [584] ) ] spids: [581 582 587 16777215] ) (case_arm pat_list: [{(h)} {(Lit_Other '?')}] action: [(C {(usage)})] spids: [590 593 597 16777215] ) ] spids: [508 512 600] ) ] spids: [505 602] ) ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list)) spids: [606 612] ) terminator: <Op_Semi ';'> ) ] action: [ (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$OPTIND')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [620 629] ) } ) (AndOr ops: [Op_DPipe] children: [ (DParen child:(ArithWord w:{($ VSub_Pound '$#')}) spids:[632 637]) (C {(usage)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tpoint) op: Equal rhs: {($ VSub_Number '$1')} spids: [644] ) ] spids: [644] ) (C {(shift)}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithWord w:{($ VSub_Pound '$#')}) spids:[653 658]) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_filter) op: Equal rhs: {(1)} spids: [664] ) ] spids: [664] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: {($ VSub_Number '$1')} spids: [668] ) ] spids: [668] ) ] spids: [16777215 661] ) ] spids: [16777215 672] ) ] spids: [16777215 615] ) ] spids: [16777215 674] ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_Great left: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:opt_pid) right: (ArithVarRef name:opt_filter) ) right: (ArithVarRef name:opt_tid) ) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [680 697] ) (C {(die)} {(DQ ('ERROR: use at most one of -p, -L, or filter.'))}) ] ) (AndOr ops: [Op_DAmp] children: [ (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithVarRef name:opt_duration) right: (ArithVarRef name:opt_view) ) spids: [709 718] ) (C {(die)} {(DQ ('ERROR: use either -d or -v.'))}) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_pid) spids:[730 735]) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[745])] spids: [745] ) (ForEach iter_name: tid iter_words: [{(/proc/) ($ VSub_Name '$pid') (/task/) (Lit_Other '*')}] do_arg_iter: F body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: { (DQ ($ VSub_Name '$filter') (' || common_pid == ') (BracedVarSub token: <VSub_Name tid> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [772 777] ) ) } spids: [768] ) ] spids: [768] ) ] spids: [765 781] ) spids: [758 763] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: { (BracedVarSub token: <VSub_Name filter> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [785 789] ) } spids: [784] ) ] spids: [784] ) ] spids: [16777215 738] ) ] spids: [16777215 794] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_tid) spids:[798 803]) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_filter) op:Equal rhs:{(1)} spids:[809])] spids: [809] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filter) op: Equal rhs: {(DQ ('common_pid == ') ($ VSub_Name '$tid'))} spids: [813] ) ] spids: [813] ) ] spids: [16777215 806] ) ] spids: [16777215 819] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DAmp left: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_view)) right: (ArithUnary op_id:Arith_Bang child:(ArithVarRef name:opt_list)) ) spids: [823 834] ) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration) spids:[842 847]) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('Tracing ') ($ VSub_Name '$tpoint') (' for ') ($ VSub_Name '$duration') (' seconds (buffered)...') ) } ) ] spids: [16777215 850] ) ] else_action: [ (C {(echo)} {(DQ ('Tracing ') ($ VSub_Name '$tpoint') ('. Ctrl-C to end.'))}) ] spids: [864 876] ) ] spids: [16777215 837] ) ] spids: [16777215 878] ) (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {($ VSub_Name '$tracing')}) (C {(die)} { (DQ ('ERROR: accessing tracing. Root user? Kernel has FTRACE?\n') (' debugfs mounted? (mount -t debugfs debugfs /sys/kernel/debug)') ) } ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_list) spids:[903 908]) terminator: <Op_Semi ';'> ) ] action: [ (C {(cd)} {(events)}) (ForEach iter_name: tp iter_words: [{(Lit_Other '*') (/) (Lit_Other '*')}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DAmp] children: [ (DBracket expr: (BoolUnary op_id:BoolUnary_f child:{($ VSub_Name '$tp')}) ) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (C {(echo)} { (BracedVarSub token: <VSub_Name tp> suffix_op: (PatSub pat: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>)} replace: {(':')} do_all: F do_prefix: F do_suffix: F ) spids: [952 958] ) } ) ] spids: [930 961] ) spids: [924 928] ) (ControlFlow token:<ControlFlow_Exit exit>) ] spids: [16777215 911] ) ] spids: [16777215 966] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tdir) op: Equal rhs: {(events/) (BracedVarSub token: <VSub_Name tpoint> suffix_op: (PatSub pat: {(':')} replace: {(EscapedLiteralPart token:<Lit_EscapedChar '\\/'>)} do_all: F do_prefix: F do_suffix: F ) spids: [974 980] ) } spids: [972] ) ] spids: [972] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name '$tdir')})) (C {(die)} {(DQ ('ERROR: tracepoint ') ($ VSub_Name '$tpoint') (' not found. Exiting'))}) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_view) spids:[1006 1011]) terminator: <Op_Semi ';'> ) ] action: [ (C {(cat)} {($ VSub_Name '$tdir') (/format)}) (ControlFlow token:<ControlFlow_Exit exit>) ] spids: [16777215 1014] ) ] spids: [16777215 1025] ) (AndOr ops: [Op_DAmp] children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_e child:{($ VSub_Name '$flock')})) (C {(die)} { (DQ ('ERROR: ftrace may be in use by PID ') (CommandSubPart command_list: (CommandList children:[(C {(cat)} {($ VSub_Name '$flock')})]) left_token: <Left_CommandSub '$('> spids: [1045 1049] ) (' ') ($ VSub_Name '$flock') ) } ) ] ) (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [{(echo)} {($ VSub_Dollar '$$')}] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{($ VSub_Name '$flock')})] ) (C {(die)} {(DQ ('ERROR: unable to write ') ($ VSub_Name '$flock') (.))}) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(1)} spids:[1072])] spids: [1072] ) (SimpleCommand words: [{(echo)} {(nop)}] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(current_tracer)})] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_filter) spids:[1089 1094]) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_Name '$filter'))}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_Name '$tdir') (/filter)} ) ] ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(C {(edie)} {(DQ ('ERROR: setting filter or -p. Exiting.'))})] spids: [16777215 1116] ) ] spids: [16777215 1126] ) ] spids: [16777215 1097] ) ] spids: [16777215 1128] ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_stack) spids:[1132 1137]) terminator: <Op_Semi ';'> ) ] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(options/stacktrace)} ) ] ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [(C {(edie)} {(DQ ('ERROR: enabling stack traces (-s). Exiting'))})] spids: [16777215 1156] ) ] spids: [16777215 1166] ) ] spids: [16777215 1140] ) ] spids: [16777215 1168] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {($ VSub_Name '$tdir') (/enable)} ) ] ) ] negated: T ) terminator: <Op_Semi ';'> ) ] action: [ (C {(edie)} {(DQ ('ERROR: enabling tracepoint ') ($ VSub_Name '$tprobe') ('. Exiting.'))}) ] spids: [16777215 1184] ) ] spids: [16777215 1195] ) (C {(warn)} {(DQ ('echo > trace'))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration) spids:[1209 1214]) terminator: <Op_Semi ';'> ) ] action: [ (C {(sleep)} {($ VSub_Name '$duration')}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_headers) spids:[1227 1232]) terminator: <Op_Semi ';'> ) ] action: [(C {(cat)} {(trace)})] spids: [16777215 1235] ) ] else_action: [(C {(grep)} {(-v)} {(SQ <'^#'>)} {(trace)})] spids: [1243 1257] ) ] spids: [16777215 1217] ) ] else_action: [ (AndOr ops: [Op_DAmp] children: [ (DParen child:(ArithVarRef name:opt_headers) spids:[1266 1271]) (C {(cat)} {(trace)}) ] ) (C {(cat)} {(trace_pipe)}) ] spids: [1259 1284] ) (C {(end)}) ] )