(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tracing) op: Equal rhs: {(/sys/kernel/debug/tracing)} spids: [142] ) ] spids: [142] ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:flock) op: Equal rhs: {(/var/tmp/.ftrace-lock)} spids: [145] ) ] spids: [145] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(0)} spids:[149])] spids: [149] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_duration) op:Equal rhs:{(0)} spids:[152])] spids: [152] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:duration) op:Equal rhs:{(SQ )} spids:[156])] spids: [156] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_name) op:Equal rhs:{(0)} spids:[159])] spids: [159] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:name) op:Equal rhs:{(SQ )} spids:[163])] spids: [163] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_pid) op:Equal rhs:{(0)} spids:[166])] spids: [166] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:pid) op:Equal rhs:{(SQ )} spids:[170])] spids: [170] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_tid) op:Equal rhs:{(0)} spids:[173])] spids: [173] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tid) op:Equal rhs:{(SQ )} spids:[177])] spids: [177] ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ftext) op:Equal rhs:{(SQ )} spids:[179])] spids: [179] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_time) op:Equal rhs:{(0)} spids:[182])] spids: [182] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_fail) op:Equal rhs:{(0)} spids:[186])] spids: [186] ) terminator: <Op_Semi ";"> ) (Sentence child: (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_file) op:Equal rhs:{(0)} spids:[190])] spids: [190] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:file) op:Equal rhs:{(SQ )} spids:[194])] spids: [194] ) (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: opensnoop [-htx] [-d secs] [-p PID] [-L TID] [-n name] [filename]\n" ) (" -d seconds # trace duration, and use buffers\n") (" -n name # process name to match on open\n") (" -p PID # PID to match on open\n") (" -L TID # PID to match on open\n") (" -t # include time (seconds)\n") (" -x # only show failed opens\n") (" -h # this usage message\n") (" filename # match filename (partials, REs, ok)\n") (" eg,\n") (" opensnoop # watch open()s live (unbuffered)\n") (" opensnoop -d 1 # trace 1 sec (buffered)\n") (" opensnoop -p 181 # trace I/O issued by PID 181 only\n") (" opensnoop conf # trace filenames containing ") (Right_DoubleQuote "\"") (conf) (Right_DoubleQuote "\"") ("\n") (" opensnoop 'log") (Lit_Other "$") ("' # filenames ending in ") (Right_DoubleQuote "\"") (log) (Right_DoubleQuote "\"") ("\n") ("\n") ("See the man page and example file for more info.\n") ) } do_expansion: True here_end: END was_filled: True spids: [225] ) (Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[228]) ] ) (C {(exit)}) ] spids: [220] ) spids: [216 219] ) (FuncDef name: warn body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children:[(C {(eval)} {(DQ ($ VSub_At "$@"))})] negated:True) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("WARNING: command failed ") (EscapedLiteralPart token: <Lit_EscapedChar "\\\""> ) ($ VSub_At "$@") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[287])] ) ] spids: [-1 282] ) ] spids: [-1 298] ) ] spids: [268] ) spids: [264 267] ) (FuncDef name: end body: (BraceGroup children: [ (SimpleCommand words: [{(echo)}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[316])] ) (SimpleCommand words: [{(echo)} {(DQ ("Ending tracing..."))}] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[326])] ) (C {(cd)} {($ VSub_Name "$tracing")}) (C {(warn)} {(DQ ("echo 0 > events/kprobes/getnameprobe/enable"))}) (C {(warn)} {(DQ ("echo 0 > events/syscalls/sys_exit_open/enable"))}) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child: (ArithBinary op_id: Arith_DPipe left: (ArithVarRef name:opt_pid) right: (ArithVarRef name:opt_tid) ) ) terminator: <Op_Semi ";"> ) ] action: [ (C {(warn)} {(DQ ("echo 0 > events/kprobes/getnameprobe/filter"))}) (C {(warn)} {(DQ ("echo 0 > events/syscalls/sys_exit_open/filter"))}) ] spids: [-1 363] ) ] spids: [-1 380] ) (C {(warn)} {(DQ ("echo -:getnameprobe >> kprobe_events"))}) (C {(warn)} {(DQ ("echo > trace"))}) (AndOr children: [ (DParen child:(ArithVarRef name:wroteflock)) (C {(warn)} {(DQ ("rm ") ($ VSub_Name "$flock"))}) ] op_id: Op_DAmp ) ] spids: [307] ) spids: [303 306] ) (FuncDef name: die body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[425])] ) (C {(exit)} {(1)}) ] spids: [420] ) spids: [416 419] ) (FuncDef name: edie body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ($ VSub_At "$@"))}] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[453])] ) (SimpleCommand words: [{(exec)}] redirects: [ (Redir op_id:Redir_Great fd:-1 arg_word:{(/dev/null)} spids:[463]) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[466]) ] ) (C {(end)}) (C {(exit)} {(1)}) ] spids: [444] ) spids: [440 443] ) (While cond: [ (C {(getopts)} {(d) (Lit_Other ":") (hn) (Lit_Other ":") (p) (Lit_Other ":") (L) (Lit_Other ":") (tx)} {(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: [512] ) ] spids: [512] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:duration) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [516] ) ] spids: [516] ) ] spids: [509 510 519 -1] ) (case_arm pat_list: [{(n)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_name) op: Equal rhs: {(1)} spids: [525] ) ] spids: [525] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [529] ) ] spids: [529] ) ] spids: [522 523 532 -1] ) (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: [538] ) ] spids: [538] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [542] ) ] spids: [542] ) ] spids: [535 536 545 -1] ) (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: [551] ) ] spids: [551] ) terminator: <Op_Semi ";"> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tid) op: Equal rhs: {($ VSub_Name "$OPTARG")} spids: [555] ) ] spids: [555] ) ] spids: [548 549 558 -1] ) (case_arm pat_list: [{(t)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_time) op: Equal rhs: {(1)} spids: [564] ) ] spids: [564] ) ] spids: [561 562 567 -1] ) (case_arm pat_list: [{(x)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:opt_fail) op: Equal rhs: {(1)} spids: [573] ) ] spids: [573] ) ] spids: [570 571 576 -1] ) (case_arm pat_list: [{(h)} {(Lit_Other "?")}] action: [(C {(usage)})] spids: [579 582 586 -1] ) ] spids: [502 506 589] ) ] spids: [499 591] ) ) (C {(shift)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name "$OPTIND")}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [595 604] ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithWord w:{($ VSub_Pound "$#")})) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:opt_file) op:Equal rhs:{(1)} spids:[619])] spids: [619] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: {($ VSub_Number "$1")} spids: [623] ) ] spids: [623] ) (C {(shift)}) ] spids: [-1 616] ) ] spids: [-1 629] ) (AndOr children: [(DParen child:(ArithWord w:{($ VSub_Pound "$#")})) (C {(usage)})] op_id: Op_DAmp ) (AndOr 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_name) ) right: (ArithVarRef name:opt_tid) ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) (C {(die)} {(DQ ("ERROR: use at most one of -p, -n, -L."))}) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_pid)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ftext) op: Equal rhs: {(DQ (" issued by PID ") ($ VSub_Name "$pid"))} spids: [684] ) ] spids: [684] ) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_tid)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ftext) op: Equal rhs: {(DQ (" issued by TID ") ($ VSub_Name "$tid"))} spids: [699] ) ] spids: [699] ) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_name)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ftext) op: Equal rhs: { (DQ (" issued by process name ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$name") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } spids: [714] ) ] spids: [714] ) ] op_id: Op_DAmp ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_file)) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ftext) op: Equal rhs: { (DQ ($ VSub_Name "$ftext") (" for filenames containing ") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ($ VSub_Name "$file") (EscapedLiteralPart token:<Lit_EscapedChar "\\\"">) ) } spids: [731] ) ] spids: [731] ) ] op_id: Op_DAmp ) (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration)) terminator: <Op_Semi ";"> ) ] action: [ (C {(echo)} { (DQ ("Tracing open()s") ($ VSub_Name "$ftext") (" for ") ($ VSub_Name "$duration") (" seconds (buffered)...") ) } ) ] spids: [-1 750] ) ] else_action: [(C {(echo)} {(DQ ("Tracing open()s") ($ VSub_Name "$ftext") (". Ctrl-C to end."))})] spids: [763 774] ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_duration)) (AndOr children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:use) op:Equal rhs:{(mawk)} spids:[789])] spids: [789] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:use) op:Equal rhs:{(gawk)} spids:[794])] spids: [794] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (AndOr children: [ (DBracket expr:(BoolUnary op_id:BoolUnary_x child:{(/usr/bin/) ($ VSub_Name "$use")})) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:awk) op: Equal rhs: {($ VSub_Name "$use")} spids: [811] ) ] spids: [811] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:awk) op:Equal rhs:{(awk)} spids:[816])] spids: [816] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (AndOr 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)") ) } ) ] op_id: Op_DPipe ) (AndOr 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: [854 858] ) (" ") ($ VSub_Name "$flock") ) } ) ] op_id: Op_DAmp ) (AndOr children: [ (SimpleCommand words: [{(echo)} {($ VSub_Dollar "$$")}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{($ VSub_Name "$flock")} spids:[867])] ) (C {(die)} {(DQ ("ERROR: unable to write ") ($ VSub_Name "$flock") (.))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:wroteflock) op:Equal rhs:{(1)} spids:[881])] spids: [881] ) (SimpleCommand words: [{(echo)} {(nop)}] redirects: [(Redir op_id:Redir_Great fd:-1 arg_word:{(current_tracer)} spids:[892])] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ver) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(uname)} {(-r)})]) left_token: <Left_CommandSub "$("> spids: [897 901] ) } spids: [896] ) ] spids: [896] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$ver"))} right: {(2.) (Lit_Other "*")} ) right: (BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_Name "$ver"))} right: {(3.) (Lit_Other "[") (1-6) (Lit_Other "]") (.) (Lit_Other "*")} ) ) ) terminator: <Op_Semi ";"> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kprobe) op: Equal rhs: {(SQ <"r:getnameprobe getname +0($retval):string">)} spids: [941] ) ] spids: [941] ) ] spids: [-1 934] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:kprobe) op: Equal rhs: {(SQ <"r:getnameprobe getname +0(+0($retval)):string">)} spids: [953] ) ] spids: [953] ) ] spids: [946 958] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {($ VSub_Name "$kprobe")}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(kprobe_events)} spids: [968] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: adding a kprobe for getname(). Exiting."))})] spids: [-1 973] ) ] spids: [-1 982] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_pid)) terminator:<Op_Semi ";">)] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:filter) op:Equal rhs:{(SQ )} spids:[997])] spids: [997] ) (ForEach iter_name: tid iter_words: [{(/proc/) ($ VSub_Name "$pid") (/task/) (Lit_Other "*")}] do_arg_iter: False 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: [1019 1024] ) ) } spids: [1015] ) ] spids: [1015] ) ] spids: [1012 1028] ) spids: [1005 1010] ) (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: [1032 1036] ) } spids: [1031] ) ] spids: [1031] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (Pipeline children: [ (SimpleCommand words: [{(echo)} {($ VSub_Name "$filter")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/kprobes/getnameprobe/filter)} spids: [1050] ) ] ) ] negated: True ) (Pipeline children: [ (SimpleCommand words: [{(echo)} {($ VSub_Name "$filter")}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/syscalls/sys_exit_open/filter)} spids: [1064] ) ] ) ] negated: True ) ] op_id: Op_DPipe ) ] action: [ (C {(edie)} {(DQ ("ERROR: setting -p ") ($ VSub_Name "$pid") (". Exiting."))}) ] spids: [-1 1069] ) ] spids: [-1 1081] ) ] spids: [-1 994] ) ] spids: [-1 1083] ) (If arms: [ (if_arm cond: [(Sentence child:(DParen child:(ArithVarRef name:opt_tid)) terminator:<Op_Semi ";">)] action: [ (If arms: [ (if_arm cond: [ (AndOr children: [ (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ("common_pid == ") ($ VSub_Name "$tid"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/kprobes/getnameprobe/filter)} spids: [1109] ) ] ) ] negated: True ) (Pipeline children: [ (SimpleCommand words: [{(echo)} {(DQ ("common_pid == ") ($ VSub_Name "$tid"))}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/syscalls/sys_exit_open/filter)} spids: [1126] ) ] ) ] negated: True ) ] op_id: Op_DPipe ) ] action: [ (C {(edie)} {(DQ ("ERROR: setting -L ") ($ VSub_Name "$tid") (". Exiting."))}) ] spids: [-1 1131] ) ] spids: [-1 1143] ) ] spids: [-1 1095] ) ] spids: [-1 1145] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/kprobes/getnameprobe/enable)} spids: [1155] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: enabling kprobe for getname(). Exiting."))})] spids: [-1 1160] ) ] spids: [-1 1169] ) (If arms: [ (if_arm cond: [ (Sentence child: (Pipeline children: [ (SimpleCommand words: [{(echo)} {(1)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(events/syscalls/sys_exit_open/enable)} spids: [1179] ) ] ) ] negated: True ) terminator: <Op_Semi ";"> ) ] action: [(C {(edie)} {(DQ ("ERROR: enabling open() exit tracepoint. Exiting."))})] spids: [-1 1184] ) ] spids: [-1 1193] ) (AndOr children: [ (DParen child:(ArithVarRef name:opt_time)) (C {(printf)} {(DQ ("%-16s "))} {(DQ (TIMEs))}) ] op_id: Op_DAmp ) (C {(printf)} {(DQ ("%-16.16s %-6s %4s %s") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(DQ (COMM))} {(DQ (PID))} {(DQ (FD))} {(DQ (FILE))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:offset) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {($ VSub_Name "$awk")} { (SQ <"BEGIN { o = 0; }\n"> <"\t$1 == \"#\" && $2 ~ /TASK/ && NF == 6 { o = 1; }\n"> <"\t$2 ~ /TASK/ { print o; exit }"> ) } {(trace)} ) ] ) left_token: <Left_CommandSub "$("> spids: [1260 1270] ) } spids: [1259] ) ] spids: [1259] ) (C {(warn)} {(DQ ("echo > trace"))}) (Pipeline children: [ (Subshell child: (If arms: [ (if_arm cond: [ (Sentence child: (DParen child:(ArithVarRef name:opt_duration)) terminator: <Op_Semi ";"> ) ] action: [(C {(sleep)} {($ VSub_Name "$duration")}) (C {(cat)} {(trace)})] spids: [-1 1294] ) ] else_action: [(C {(cat)} {(trace_pipe)})] spids: [1310 1321] ) spids: [1282 1323] ) (C {($ VSub_Name "$awk")} {(-v)} {(Lit_VarLike "o=") ($ VSub_Name "$offset")} {(-v)} {(Lit_VarLike "opt_name=") ($ VSub_Name "$opt_name")} {(-v)} {(Lit_VarLike "name=") ($ VSub_Name "$name")} {(-v)} {(Lit_VarLike "opt_duration=") ($ VSub_Name "$opt_duration")} {(-v)} {(Lit_VarLike "opt_time=") ($ VSub_Name "$opt_time")} {(-v)} {(Lit_VarLike "opt_fail=") ($ VSub_Name "$opt_fail")} {(-v)} {(Lit_VarLike "opt_file=") ($ VSub_Name "$opt_file")} {(-v)} {(Lit_VarLike "file=") ($ VSub_Name "$file")} { (SQ <"\n"> <"\t# common fields\n"> <"\t$1 != \"#\" {\n"> <"\t\t# task name can contain dashes and space\n"> <"\t\tsplit($0, line, \"-\")\n"> <"\t\tsub(/^[ \\t\\r\\n]+/, \"\", line[1])\n"> <"\t\tcomm = line[1]\n"> <"\t\tif (opt_name && match(comm, name) == 0)\n"> <"\t\t\tnext\n"> <"\t\tsub(/ .*$/, \"\", line[2])\n"> <"\t\tpid = line[2]\n"> <"\t}\n"> <"\n"> <"\t# do_sys_open()\n"> <"\t$1 != \"#\" && $(5+o) ~ /do_sys_open/ {\n"> <"\t\t#\n"> <"\t\t# eg: ... (do_sys_open+0xc3/0x220 <- getname) arg1=\"file1\"\n"> <"\t\t#\n"> <"\t\tfilename = $NF\n"> <"\t\tsub(/\"$/, \"\", filename)\n"> <"\t\tsub(/.*\"/, \"\", filename)\n"> <"\t\tlastfile[pid] = filename\n"> <"\t}\n"> <"\n"> <"\t# sys_open()\n"> <"\t$1 != \"#\" && $(4+o) == \"sys_open\" {\n"> <"\t\tfilename = lastfile[pid]\n"> <"\t\tdelete lastfile[pid]\n"> <"\t\tif (opt_file && filename !~ file)\n"> <"\t\t\tnext\n"> <"\t\trval = $NF\n"> <"\t\t# matched failed as beginning with 0xfffff\n"> <"\t\tif (opt_fail && rval !~ /0xfffff/)\n"> <"\t\t\tnext\n"> <"\t\tif (rval ~ /0xfffff/)\n"> <"\t\t\trval = -1\n"> <"\n"> <"\t\tif (opt_time) {\n"> <"\t\t\ttime = $(3+o); sub(\":\", \"\", time)\n"> <"\t\t\tprintf \"%-16s \", time\n"> <"\t\t}\n"> <"\t\tprintf \"%-16.16s %-6s %4s %s\\n\", comm, pid, rval, filename\n"> <"\t}\n"> <"\n"> <"\t$0 ~ /LOST.*EVENTS/ { print \"WARNING: \" $0 > \"/dev/stderr\" }\n"> ) } ) ] negated: False ) (C {(end)}) ] )