decode_packet_trace.py (10107:524afa92d940) decode_packet_trace.py (10132:894ec19274e9)
1#!/usr/bin/env python
2
3# Copyright (c) 2013-2014 ARM Limited
4# All rights reserved
5#
6# The license below extends only to copyright in the software and shall
7# not be construed as granting a license to any other intellectual
8# property including but not limited to intellectual property relating

--- 34 unchanged lines hidden (view full) ---

43# be done manually using:
44# protoc --python_out=. --proto_path=src/proto src/proto/packet.proto
45#
46# The ASCII trace format uses one line per request on the format cmd,
47# addr, size, tick,flags. For example:
48# r,128,64,4000,0
49# w,232123,64,500000,0
50
1#!/usr/bin/env python
2
3# Copyright (c) 2013-2014 ARM Limited
4# All rights reserved
5#
6# The license below extends only to copyright in the software and shall
7# not be construed as granting a license to any other intellectual
8# property including but not limited to intellectual property relating

--- 34 unchanged lines hidden (view full) ---

43# be done manually using:
44# protoc --python_out=. --proto_path=src/proto src/proto/packet.proto
45#
46# The ASCII trace format uses one line per request on the format cmd,
47# addr, size, tick,flags. For example:
48# r,128,64,4000,0
49# w,232123,64,500000,0
50
51import gzip
51import protolib
52import sys
53
54# Import the packet proto definitions. If they are not found, attempt
55# to generate them automatically. This assumes that the script is
56# executed from the gem5 root.
57try:
58 import packet_pb2

--- 17 unchanged lines hidden (view full) ---

76 exit(-1)
77
78def main():
79 if len(sys.argv) != 3:
80 print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
81 exit(-1)
82
83 try:
52import protolib
53import sys
54
55# Import the packet proto definitions. If they are not found, attempt
56# to generate them automatically. This assumes that the script is
57# executed from the gem5 root.
58try:
59 import packet_pb2

--- 17 unchanged lines hidden (view full) ---

77 exit(-1)
78
79def main():
80 if len(sys.argv) != 3:
81 print "Usage: ", sys.argv[0], " <protobuf input> <ASCII output>"
82 exit(-1)
83
84 try:
84 proto_in = open(sys.argv[1], 'rb')
85 # First see if this file is gzipped
86 try:
87 # Opening the file works even if it is not a gzip file
88 proto_in = gzip.open(sys.argv[1], 'rb')
89
90 # Force a check of the magic number by seeking in the
91 # file. If we do not do it here the error will occur when
92 # reading the first message.
93 proto_in.seek(1)
94 proto_in.seek(0)
95 except IOError:
96 proto_in = open(sys.argv[1], 'rb')
85 except IOError:
86 print "Failed to open ", sys.argv[1], " for reading"
87 exit(-1)
88
89 try:
90 ascii_out = open(sys.argv[2], 'w')
91 except IOError:
92 print "Failed to open ", sys.argv[2], " for writing"
93 exit(-1)
94
95 # Read the magic number in 4-byte Little Endian
96 magic_number = proto_in.read(4)
97
98 if magic_number != "gem5":
97 except IOError:
98 print "Failed to open ", sys.argv[1], " for reading"
99 exit(-1)
100
101 try:
102 ascii_out = open(sys.argv[2], 'w')
103 except IOError:
104 print "Failed to open ", sys.argv[2], " for writing"
105 exit(-1)
106
107 # Read the magic number in 4-byte Little Endian
108 magic_number = proto_in.read(4)
109
110 if magic_number != "gem5":
99 print "Unrecognized file"
111 print "Unrecognized file", sys.argv[1]
100 exit(-1)
101
102 print "Parsing packet header"
103
104 # Add the packet header
105 header = packet_pb2.PacketHeader()
106 protolib.decodeMessage(proto_in, header)
107

--- 30 unchanged lines hidden ---
112 exit(-1)
113
114 print "Parsing packet header"
115
116 # Add the packet header
117 header = packet_pb2.PacketHeader()
118 protolib.decodeMessage(proto_in, header)
119

--- 30 unchanged lines hidden ---