Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Baekalfen authored and Stefan Hajnoczi committed Sep 26, 2023
1 parent f7bd4f0 commit 3b71b61
Showing 1 changed file with 17 additions and 17 deletions.
34 changes: 17 additions & 17 deletions scripts/simpletrace.py
Expand Up @@ -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 ' \
Expand Down Expand Up @@ -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"""
Expand All @@ -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
"""
Expand All @@ -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

Expand Down Expand Up @@ -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):
Expand All @@ -234,9 +234,9 @@ def build_fn(analyzer, event):

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)
Expand Down

0 comments on commit 3b71b61

Please sign in to comment.