dtoc: Support packing the device tree
After any node/property deletion the device tree can be packed to remove spare space. Add a way to perform this operation. Note that for fdt_fallback, fdtput automatically packs the device tree after deletion, so no action is required here. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
2a70d897ed
commit
da5f74998b
@ -107,3 +107,4 @@ int fdt_next_subnode(const void *fdt, int offset);
|
||||
int fdt_delprop(void *fdt, int nodeoffset, const char *name);
|
||||
|
||||
const char *fdt_strerror(int errval);
|
||||
int fdt_pack(void *fdt);
|
||||
|
@ -240,3 +240,19 @@ class Fdt:
|
||||
return None
|
||||
return node
|
||||
|
||||
def Flush(self):
|
||||
"""Flush device tree changes back to the file
|
||||
|
||||
If the device tree has changed in memory, write it back to the file.
|
||||
Subclasses can implement this if needed.
|
||||
"""
|
||||
pass
|
||||
|
||||
def Pack(self):
|
||||
"""Pack the device tree down to its minimum size
|
||||
|
||||
When nodes and properties shrink or are deleted, wasted space can
|
||||
build up in the device tree binary. Subclasses can implement this
|
||||
to remove that spare space.
|
||||
"""
|
||||
pass
|
||||
|
@ -140,6 +140,17 @@ class FdtNormal(Fdt):
|
||||
"""
|
||||
return self._fdt
|
||||
|
||||
def Flush(self):
|
||||
"""Flush device tree changes back to the file"""
|
||||
with open(self._fname, 'wb') as fd:
|
||||
fd.write(self._fdt)
|
||||
|
||||
def Pack(self):
|
||||
"""Pack the device tree down to its minimum size"""
|
||||
CheckErr(libfdt.fdt_pack(self._fdt), 'pack')
|
||||
fdt_len = libfdt.fdt_totalsize(self._fdt)
|
||||
del self._fdt[fdt_len:]
|
||||
|
||||
def GetProps(self, node, path):
|
||||
"""Get all properties from a node.
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user