pylibfdt: add size_hint parameter for get_path
This also enables us to test the -NOSPACE condition by adding a test setting size_hint=1 so this path is taken. Message-Id: <20230201181112.1644842-1-luca@z3ntu.xyz> Signed-off-by: Luca Weiss <luca@z3ntu.xyz> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
parent
abbd523bae
commit
3f29d6d85c
2 changed files with 5 additions and 4 deletions
|
@ -443,11 +443,12 @@ class FdtRo(object):
|
||||||
"""
|
"""
|
||||||
return fdt_get_alias(self._fdt, name)
|
return fdt_get_alias(self._fdt, name)
|
||||||
|
|
||||||
def get_path(self, nodeoffset, quiet=()):
|
def get_path(self, nodeoffset, size_hint=1024, quiet=()):
|
||||||
"""Get the full path of a node
|
"""Get the full path of a node
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
nodeoffset: Node offset to check
|
nodeoffset: Node offset to check
|
||||||
|
size_hint: Hint for size of returned string
|
||||||
|
|
||||||
Returns:
|
Returns:
|
||||||
Full path to the node
|
Full path to the node
|
||||||
|
@ -455,11 +456,10 @@ class FdtRo(object):
|
||||||
Raises:
|
Raises:
|
||||||
FdtException if an error occurs
|
FdtException if an error occurs
|
||||||
"""
|
"""
|
||||||
size = 1024
|
|
||||||
while True:
|
while True:
|
||||||
ret, path = fdt_get_path(self._fdt, nodeoffset, size)
|
ret, path = fdt_get_path(self._fdt, nodeoffset, size_hint)
|
||||||
if ret == -NOSPACE:
|
if ret == -NOSPACE:
|
||||||
size = size * 2
|
size_hint *= 2
|
||||||
continue
|
continue
|
||||||
err = check_err(ret, quiet)
|
err = check_err(ret, quiet)
|
||||||
if err:
|
if err:
|
||||||
|
|
|
@ -354,6 +354,7 @@ class PyLibfdtBasicTests(unittest.TestCase):
|
||||||
node2 = self.fdt.path_offset('/subnode@1/subsubnode')
|
node2 = self.fdt.path_offset('/subnode@1/subsubnode')
|
||||||
self.assertEqual("/subnode@1", self.fdt.get_path(node))
|
self.assertEqual("/subnode@1", self.fdt.get_path(node))
|
||||||
self.assertEqual("/subnode@1/subsubnode", self.fdt.get_path(node2))
|
self.assertEqual("/subnode@1/subsubnode", self.fdt.get_path(node2))
|
||||||
|
self.assertEqual("/subnode@1/subsubnode", self.fdt.get_path(node2, size_hint=1))
|
||||||
|
|
||||||
with self.assertRaises(FdtException) as e:
|
with self.assertRaises(FdtException) as e:
|
||||||
self.fdt.get_path(-1)
|
self.fdt.get_path(-1)
|
||||||
|
|
Loading…
Reference in a new issue