mirror of
https://github.com/littlefs-project/littlefs.git
synced 2025-12-01 12:20:02 +00:00
scripts: maps: Cleaned up/moved header generation before rendering
Should've probably been two commits, but: 1. Cleaned up tracebd.py's header generation to be consistent with dbgbmap.py and other scripts. Percentage fields are now consistently floats in all scripts, allowing user-specified precision when punescaping. 2. Moved header generation up to where we still have the disk open (in dbgbmap[d3].py), to avoid issues with lazy Lfs attrs trying to access the disk after it's been closed. Found while testing with --title='cksum %(cksum)08x'. Lfs tries to validate the gcksum last minute and things break.
This commit is contained in:
@ -4539,6 +4539,64 @@ def main_(ring, disk, mroots=None, *,
|
||||
else:
|
||||
bmap[b] = BmapBlock(b, type, child, usage)
|
||||
|
||||
# one last thing, build a title
|
||||
if title:
|
||||
title_ = punescape(title, {
|
||||
'magic': 'littlefs%s' % (
|
||||
'' if lfs.ckmagic() else '?'),
|
||||
'version': 'v%s.%s' % (
|
||||
lfs.version.major if lfs.version is not None else '?',
|
||||
lfs.version.minor if lfs.version is not None else '?'),
|
||||
'version_major':
|
||||
lfs.version.major if lfs.version is not None else '?',
|
||||
'version_minor':
|
||||
lfs.version.minor if lfs.version is not None else '?',
|
||||
'geometry': '%sx%s' % (
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
lfs.block_count if lfs.block_count is not None else '?'),
|
||||
'block_size':
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
'block_count':
|
||||
lfs.block_count if lfs.block_count is not None else '?',
|
||||
'addr': lfs.addr(),
|
||||
'weight': 'w%s.%s' % (lfs.mbweightrepr(), lfs.mrweightrepr()),
|
||||
'mbweight': lfs.mbweightrepr(),
|
||||
'mrweight': lfs.mrweightrepr(),
|
||||
'rev': '%08x' % lfs.rev,
|
||||
'cksum': '%08x%s' % (
|
||||
lfs.cksum,
|
||||
'' if lfs.ckgcksum() else '?'),
|
||||
'total': total_count,
|
||||
'total_percent': 100*total_count / max(len(bmap), 1),
|
||||
'mdir': mdir_count,
|
||||
'mdir_percent': 100*mdir_count / max(len(bmap), 1),
|
||||
'btree': btree_count,
|
||||
'btree_percent': 100*btree_count / max(len(bmap), 1),
|
||||
'data': data_count,
|
||||
'data_percent': 100*data_count / max(len(bmap), 1),
|
||||
})
|
||||
elif title_littlefs:
|
||||
title_ = ('littlefs%s v%s.%s %sx%s %s w%s.%s, '
|
||||
'rev %08x, '
|
||||
'cksum %08x%s' % (
|
||||
'' if lfs.ckmagic() else '?',
|
||||
lfs.version.major if lfs.version is not None else '?',
|
||||
lfs.version.minor if lfs.version is not None else '?',
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
lfs.block_count if lfs.block_count is not None else '?',
|
||||
lfs.addr(),
|
||||
lfs.mbweightrepr(), lfs.mrweightrepr(),
|
||||
lfs.rev,
|
||||
lfs.cksum,
|
||||
'' if lfs.ckgcksum() else '?'))
|
||||
else:
|
||||
title_ = ('bd %sx%s, %6s mdir, %6s btree, %6s data' % (
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
lfs.block_count if lfs.block_count is not None else '?',
|
||||
'%.1f%%' % (100*mdir_count / max(len(bmap), 1)),
|
||||
'%.1f%%' % (100*btree_count / max(len(bmap), 1)),
|
||||
'%.1f%%' % (100*data_count / max(len(bmap), 1))))
|
||||
|
||||
# scale width/height if requested
|
||||
if (to_scale is not None
|
||||
and (width is None or height is None)):
|
||||
@ -4754,68 +4812,7 @@ def main_(ring, disk, mroots=None, *,
|
||||
|
||||
# print some summary info
|
||||
if not no_header:
|
||||
if title:
|
||||
ring.writeln(punescape(title, {
|
||||
'magic': 'littlefs%s' % (
|
||||
'' if lfs.ckmagic() else '?'),
|
||||
'version': 'v%s.%s' % (
|
||||
lfs.version.major
|
||||
if lfs.version is not None else '?',
|
||||
lfs.version.minor
|
||||
if lfs.version is not None else '?'),
|
||||
'version_major': lfs.version.major
|
||||
if lfs.version is not None else '?',
|
||||
'version_minor': lfs.version.minor
|
||||
if lfs.version is not None else '?',
|
||||
'geometry': '%sx%s' % (
|
||||
lfs.block_size
|
||||
if lfs.block_size is not None else '?',
|
||||
lfs.block_count
|
||||
if lfs.block_count is not None else '?'),
|
||||
'block_size': lfs.block_size
|
||||
if lfs.block_size is not None else '?',
|
||||
'block_count': lfs.block_count
|
||||
if lfs.block_count is not None else '?',
|
||||
'addr': lfs.addr(),
|
||||
'weight': 'w%s.%s' % (
|
||||
lfs.mbweightrepr(),
|
||||
lfs.mrweightrepr()),
|
||||
'mbweight': lfs.mbweightrepr(),
|
||||
'mrweight': lfs.mrweightrepr(),
|
||||
'cksum': '%08x%s' % (
|
||||
lfs.cksum,
|
||||
'' if lfs.ckgcksum() else '?'),
|
||||
'total': total_count,
|
||||
'total_percent': '%.1f%%' % (
|
||||
100*total_count / max(len(bmap), 1)),
|
||||
'mdir': mdir_count,
|
||||
'mdir_percent': '%.1f%%' % (
|
||||
100*mdir_count / max(len(bmap), 1)),
|
||||
'btree': btree_count,
|
||||
'btree_percent': '%.1f%%' % (
|
||||
100*btree_count / max(len(bmap), 1)),
|
||||
'data': data_count,
|
||||
'data_percent': '%.1f%%' % (
|
||||
100*data_count / max(len(bmap), 1)),
|
||||
}))
|
||||
elif title_littlefs:
|
||||
ring.writeln('littlefs%s v%s.%s %sx%s %s w%s.%s, cksum %08x%s' % (
|
||||
'' if lfs.ckmagic() else '?',
|
||||
lfs.version.major if lfs.version is not None else '?',
|
||||
lfs.version.minor if lfs.version is not None else '?',
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
lfs.block_count if lfs.block_count is not None else '?',
|
||||
lfs.addr(),
|
||||
lfs.mbweightrepr(), lfs.mrweightrepr(),
|
||||
lfs.cksum,
|
||||
'' if lfs.ckgcksum() else '?'))
|
||||
else:
|
||||
ring.writeln('bd %sx%s, %6s mdir, %6s btree, %6s data' % (
|
||||
lfs.block_size if lfs.block_size is not None else '?',
|
||||
lfs.block_count if lfs.block_count is not None else '?',
|
||||
'%.1f%%' % (100*mdir_count / max(len(bmap), 1)),
|
||||
'%.1f%%' % (100*btree_count / max(len(bmap), 1)),
|
||||
'%.1f%%' % (100*data_count / max(len(bmap), 1))))
|
||||
ring.writeln(title_)
|
||||
|
||||
# draw canvas
|
||||
for row in range(canvas.height//canvas.yscale):
|
||||
|
||||
Reference in New Issue
Block a user