mirror of
https://github.com/AsahiLinux/u-boot
synced 2024-11-10 07:04:28 +00:00
dtoc: Support deleting a node
Add a function to delete a node. This is synced to the tree when requested. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
bc116029c0
commit
a30c39f2f7
2 changed files with 26 additions and 0 deletions
|
@ -548,6 +548,23 @@ class Node:
|
|||
self.subnodes.append(subnode)
|
||||
return subnode
|
||||
|
||||
def Delete(self):
|
||||
"""Delete a node
|
||||
|
||||
The node is deleted and the offset cache is invalidated.
|
||||
|
||||
Args:
|
||||
node (Node): Node to delete
|
||||
|
||||
Raises:
|
||||
ValueError if the node does not exist
|
||||
"""
|
||||
CheckErr(self._fdt._fdt_obj.del_node(self.Offset()),
|
||||
"Node '%s': delete" % self.path)
|
||||
parent = self.parent
|
||||
self._fdt.Invalidate()
|
||||
parent.subnodes.remove(self)
|
||||
|
||||
def Sync(self, auto_resize=False):
|
||||
"""Sync node changes back to the device tree
|
||||
|
||||
|
|
|
@ -539,6 +539,15 @@ class TestProp(unittest.TestCase):
|
|||
data = self.fdt.getprop(self.node.Offset(), 'stringlist')
|
||||
self.assertEqual(b'123\x00456\0', data)
|
||||
|
||||
def test_delete_node(self):
|
||||
"""Test deleting a node"""
|
||||
old_offset = self.fdt.path_offset('/spl-test')
|
||||
self.assertGreater(old_offset, 0)
|
||||
self.node.Delete()
|
||||
self.dtb.Sync()
|
||||
new_offset = self.fdt.path_offset('/spl-test', libfdt.QUIET_NOTFOUND)
|
||||
self.assertEqual(-libfdt.NOTFOUND, new_offset)
|
||||
|
||||
def testFromData(self):
|
||||
dtb2 = fdt.Fdt.FromData(self.dtb.GetContents())
|
||||
self.assertEqual(dtb2.GetContents(), self.dtb.GetContents())
|
||||
|
|
Loading…
Reference in a new issue