summaryrefslogtreecommitdiffstats
path: root/unit_trace/trace_reader.py
diff options
context:
space:
mode:
Diffstat (limited to 'unit_trace/trace_reader.py')
-rw-r--r--unit_trace/trace_reader.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/unit_trace/trace_reader.py b/unit_trace/trace_reader.py
index a4c3c05..fe5c03c 100644
--- a/unit_trace/trace_reader.py
+++ b/unit_trace/trace_reader.py
@@ -93,7 +93,6 @@ def trace_reader(files):
93 93
94 # Keep pulling records as long as we have a buffer 94 # Keep pulling records as long as we have a buffer
95 while len(file_iter_buff) > 0: 95 while len(file_iter_buff) > 0:
96
97 # Select the earliest record from those at the heads of the buffers 96 # Select the earliest record from those at the heads of the buffers
98 earliest = -1 97 earliest = -1
99 buff_to_refill = -1 98 buff_to_refill = -1
@@ -120,7 +119,8 @@ def trace_reader(files):
120 del file_iters[buff_to_refill] 119 del file_iters[buff_to_refill]
121 120
122 # Check for monotonically increasing time 121 # Check for monotonically increasing time
123 if last_time is not None and earliest.when < last_time: 122 if last_time is not None and earliest.when != 0 and earliest.when < last_time:
123 print("FATAL Old: %s, New: %s" % (last_time, earliest.when))
124 exit("FATAL ERROR: trace_reader.py: out-of-order record produced") 124 exit("FATAL ERROR: trace_reader.py: out-of-order record produced")
125 else: 125 else:
126 last_time = earliest.when 126 last_time = earliest.when
@@ -203,6 +203,12 @@ class StHeader:
203 keys = ['type','cpu','pid','job'] 203 keys = ['type','cpu','pid','job']
204 message = 'The header.' 204 message = 'The header.'
205 205
206class StActionData:
207 format = 'Qb'
208 formatStr = struct.Struct(StHeader.format + format)
209 keys = StHeader.keys + ['when','action']
210 message = 'An action was performed.'
211
206class StNameData: 212class StNameData:
207 format = '16s' 213 format = '16s'
208 formatStr = struct.Struct(StHeader.format + format) 214 formatStr = struct.Struct(StHeader.format + format)
@@ -269,7 +275,7 @@ class StSysReleaseData:
269def _get_type(type_num): 275def _get_type(type_num):
270 types = [None,StNameData,StParamData,StReleaseData,StAssignedData, 276 types = [None,StNameData,StParamData,StReleaseData,StAssignedData,
271 StSwitchToData,StSwitchAwayData,StCompletionData,StBlockData, 277 StSwitchToData,StSwitchAwayData,StCompletionData,StBlockData,
272 StResumeData,StSysReleaseData] 278 StResumeData,StActionData,StSysReleaseData]
273 if type_num > len(types)-1 or type_num < 1: 279 if type_num > len(types)-1 or type_num < 1:
274 raise Exception 280 raise Exception
275 return types[type_num] 281 return types[type_num]
@@ -278,5 +284,5 @@ def _get_type(type_num):
278# programmers of other modules) 284# programmers of other modules)
279def _get_type_name(type_num): 285def _get_type_name(type_num):
280 type_names = [None,"name","params","release","assign","switch_to", 286 type_names = [None,"name","params","release","assign","switch_to",
281 "switch_away","completion","block","resume","sys_release"] 287 "switch_away","completion","block","resume","action","sys_release"]
282 return type_names[type_num] 288 return type_names[type_num]