simpletrace: changed naming of edict and idtoname to improve readability
Readability is subjective, but I've expanded the naming of the variables and arguments, to help with understanding for new eyes on the code. Signed-off-by: Mads Ynddal <m.ynddal@samsung.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-id: 20230926103436.25700-5-mads@ynddal.dk Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
f7bd4f0237
commit
3b71b61e9f
@ -40,17 +40,17 @@ def read_header(fobj, hfmt):
|
||||
return None
|
||||
return struct.unpack(hfmt, hdr)
|
||||
|
||||
def get_record(edict, idtoname, rechdr, fobj):
|
||||
def get_record(event_mapping, event_id_to_name, rechdr, fobj):
|
||||
"""Deserialize a trace record from a file into a tuple
|
||||
(name, timestamp, pid, arg1, ..., arg6)."""
|
||||
if rechdr is None:
|
||||
return None
|
||||
if rechdr[0] != dropped_event_id:
|
||||
event_id = rechdr[0]
|
||||
name = idtoname[event_id]
|
||||
name = event_id_to_name[event_id]
|
||||
rec = (name, rechdr[1], rechdr[3])
|
||||
try:
|
||||
event = edict[name]
|
||||
event = event_mapping[name]
|
||||
except KeyError as e:
|
||||
sys.stderr.write('%s event is logged but is not declared ' \
|
||||
'in the trace events file, try using ' \
|
||||
@ -79,10 +79,10 @@ def get_mapping(fobj):
|
||||
|
||||
return (event_id, name)
|
||||
|
||||
def read_record(edict, idtoname, fobj):
|
||||
def read_record(event_mapping, event_id_to_name, fobj):
|
||||
"""Deserialize a trace record from a file into a tuple (event_num, timestamp, pid, arg1, ..., arg6)."""
|
||||
rechdr = read_header(fobj, rec_header_fmt)
|
||||
return get_record(edict, idtoname, rechdr, fobj)
|
||||
return get_record(event_mapping, event_id_to_name, rechdr, fobj)
|
||||
|
||||
def read_trace_header(fobj):
|
||||
"""Read and verify trace file header"""
|
||||
@ -103,14 +103,14 @@ def read_trace_header(fobj):
|
||||
raise ValueError('Log format %d not supported with this QEMU release!'
|
||||
% log_version)
|
||||
|
||||
def read_trace_records(edict, idtoname, fobj):
|
||||
def read_trace_records(event_mapping, event_id_to_name, fobj):
|
||||
"""Deserialize trace records from a file, yielding record tuples (event_num, timestamp, pid, arg1, ..., arg6).
|
||||
|
||||
Note that `idtoname` is modified if the file contains mapping records.
|
||||
Note that `event_id_to_name` is modified if the file contains mapping records.
|
||||
|
||||
Args:
|
||||
edict (str -> Event): events dict, indexed by name
|
||||
idtoname (int -> str): event names dict, indexed by event ID
|
||||
event_mapping (str -> Event): events dict, indexed by name
|
||||
event_id_to_name (int -> str): event names dict, indexed by event ID
|
||||
fobj (file): input file
|
||||
|
||||
"""
|
||||
@ -122,9 +122,9 @@ def read_trace_records(edict, idtoname, fobj):
|
||||
(rectype, ) = struct.unpack('=Q', t)
|
||||
if rectype == record_type_mapping:
|
||||
event_id, name = get_mapping(fobj)
|
||||
idtoname[event_id] = name
|
||||
event_id_to_name[event_id] = name
|
||||
else:
|
||||
rec = read_record(edict, idtoname, fobj)
|
||||
rec = read_record(event_mapping, event_id_to_name, fobj)
|
||||
|
||||
yield rec
|
||||
|
||||
@ -201,16 +201,16 @@ def process(events, log, analyzer, read_header=True):
|
||||
frameinfo = inspect.getframeinfo(inspect.currentframe())
|
||||
dropped_event = Event.build("Dropped_Event(uint64_t num_events_dropped)",
|
||||
frameinfo.lineno + 1, frameinfo.filename)
|
||||
edict = {"dropped": dropped_event}
|
||||
idtoname = {dropped_event_id: "dropped"}
|
||||
event_mapping = {"dropped": dropped_event}
|
||||
event_id_to_name = {dropped_event_id: "dropped"}
|
||||
|
||||
for event in events_list:
|
||||
edict[event.name] = event
|
||||
event_mapping[event.name] = event
|
||||
|
||||
# If there is no header assume event ID mapping matches events list
|
||||
if not read_header:
|
||||
for event_id, event in enumerate(events_list):
|
||||
idtoname[event_id] = event.name
|
||||
event_id_to_name[event_id] = event.name
|
||||
|
||||
def build_fn(analyzer, event):
|
||||
if isinstance(event, str):
|
||||
@ -234,9 +234,9 @@ def process(events, log, analyzer, read_header=True):
|
||||
|
||||
analyzer.begin()
|
||||
fn_cache = {}
|
||||
for rec in read_trace_records(edict, idtoname, log):
|
||||
for rec in read_trace_records(event_mapping, event_id_to_name, log):
|
||||
event_num = rec[0]
|
||||
event = edict[event_num]
|
||||
event = event_mapping[event_num]
|
||||
if event_num not in fn_cache:
|
||||
fn_cache[event_num] = build_fn(analyzer, event)
|
||||
fn_cache[event_num](event, rec)
|
||||
|
Loading…
Reference in New Issue
Block a user