mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-21 06:31:31 +00:00
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
3 changed files with 28 additions and 0 deletions
|
@ -107,3 +107,4 @@ int fdt_next_subnode(const void *fdt, int offset);
|
||||||
int fdt_delprop(void *fdt, int nodeoffset, const char *name);
|
int fdt_delprop(void *fdt, int nodeoffset, const char *name);
|
||||||
|
|
||||||
const char *fdt_strerror(int errval);
|
const char *fdt_strerror(int errval);
|
||||||
|
int fdt_pack(void *fdt);
|
||||||
|
|
|
@ -240,3 +240,19 @@ class Fdt:
|
||||||
return None
|
return None
|
||||||
return node
|
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
|
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):
|
def GetProps(self, node, path):
|
||||||
"""Get all properties from a node.
|
"""Get all properties from a node.
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue