1sed 's/|/ /g' | awk --bignum ' 2 3func chnstr(chn) { 4 split("A B C D E", channels, " "); 5 return channels[chn + 1] 6} 7 8func opstr(chn, op) { 9 10 a_op[1] = "PutFullData" 11 a_op[2] = "PutPartialData" 12 a_op[3] = "ArithmeticData" 13 a_op[4] = "LogicalData" 14 a_op[5] = "Get" 15 a_op[6] = "Hint" 16 a_op[7] = "AcquireBlock" 17 a_op[8] = "AcquirePerm" 18 19 b_op[1] = "PutFullData" 20 b_op[2] = "PutPartialData" 21 b_op[3] = "ArithmeticData" 22 b_op[4] = "LogicalData" 23 b_op[5] = "Get" 24 b_op[6] = "Hint" 25 b_op[7] = "Probe" 26 27 c_op[1] = "AccessAck" 28 c_op[2] = "AccessAckData" 29 c_op[3] = "HintAck" 30 c_op[4] = "Invalid Opcode" 31 c_op[5] = "ProbeAck" 32 c_op[6] = "ProbeAckData" 33 c_op[7] = "Release" 34 c_op[8] = "ReleaseData" 35 36 d_op[1] = "AccessAck" 37 d_op[2] = "AccessAckData" 38 d_op[3] = "HintAck" 39 d_op[4] = "Invalid Opcode" 40 d_op[5] = "Grant" 41 d_op[6] = "GrantData" 42 d_op[7] = "ReleaseAck" 43 44 ret = "Unknown OP" 45 switch(chn) { 46 case 0: 47 ret = a_op[op+1] 48 break; 49 case 1: 50 ret = b_op[op+1] 51 break; 52 case 2: 53 ret = c_op[op+1] 54 break; 55 case 3: 56 ret = d_op[op+1] 57 break; 58 case 4: 59 ret = "GrantAck" 60 break; 61 } 62 return ret 63} 64 65func paramstr(chn, param) { 66 67 split("Grow NtoB_Grow NtoT_Grow BtoT", grow, "_") 68 split("Cap toT_Cap toB_Cap toN", cap, "_") 69 split("Shrink TtoB_Shrink TtoN_Shrink BtoN_Report TotT_Report BtoB_Report NtoN", report, "_") 70 71 ret = "Reserved" 72 switch(chn){ 73 case 0: 74 ret = grow[param+1] 75 break; 76 case 1: 77 ret = cap[param+1] 78 break; 79 case 2: 80 ret = report[param+1] 81 break; 82 case 3: 83 ret = cap[param+1] 84 break; 85 } 86 return ret 87} 88 89{ 90 echo = $2; 91 user = $3; 92 data_1 = $4; 93 data_2 = $5; 94 data_3 = $6; 95 data_4 = $7; 96 sink = $9; 97 source = $10; 98 99 $1 = $14; # timestamp 100 $2 = $NF; # name 101 $3 = chnstr($13) # channel 102 $NF = ""; # remove log id 103 $6 = sink; 104 $7 = source; 105 $5 = paramstr($13, $11) # param 106 $4 = opstr($13, $12) # opcode 107 108 $8 = sprintf("%lx", $8) # address 109 $9 = sprintf("%016lx", data_1) 110 $10 = sprintf("%016lx", data_2) 111 $11 = sprintf("%016lx", data_3) 112 $12 = sprintf("%016lx", data_4) 113 114 $13 = sprintf("user: %lx", user); 115 $14 = sprintf("echo: %lx", echo); 116} 117 1181 # print every line 119' 120