Re: [PATCH] pylibfdt: add size_hint parameter for get_path

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]



Hi Luca,

On Wed, 1 Feb 2023 at 11:16, Luca Weiss <luca@xxxxxxxxx> wrote:
>
> This also enables us to test the -NOSPACE condition by adding a test
> setting size_hint=1 so this path is taken.
> ---
> Follow-up from "pylibfdt: add FdtRo.get_path()" from April 2022
>
>  pylibfdt/libfdt.i       | 8 ++++----
>  tests/pylibfdt_tests.py | 1 +
>  2 files changed, 5 insertions(+), 4 deletions(-)
>

Can you add a motivation for this? Why are the paths so long?

Reviewed-by: Simon Glass <sjg@xxxxxxxxxxxx>


> diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
> index f9f7e7e..0c80c54 100644
> --- a/pylibfdt/libfdt.i
> +++ b/pylibfdt/libfdt.i
> @@ -443,11 +443,12 @@ class FdtRo(object):
>          """
>          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
>
>          Args:
>              nodeoffset: Node offset to check
> +            size_hint: Hint for size of returned string
>
>          Returns:
>              Full path to the node
> @@ -455,11 +456,10 @@ class FdtRo(object):
>          Raises:
>              FdtException if an error occurs
>          """
> -        size = 1024
>          while True:
> -            ret, path = fdt_get_path(self._fdt, nodeoffset, size)
> +            ret, path = fdt_get_path(self._fdt, nodeoffset, size_hint)
>              if ret == -NOSPACE:
> -                size = size * 2
> +                size_hint *= 2
>                  continue
>              err = check_err(ret, quiet)
>              if err:
> diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
> index 68d6aaa..34c2764 100644
> --- a/tests/pylibfdt_tests.py
> +++ b/tests/pylibfdt_tests.py
> @@ -354,6 +354,7 @@ class PyLibfdtBasicTests(unittest.TestCase):
>          node2 = self.fdt.path_offset('/subnode@1/subsubnode')
>          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, size_hint=1))
>
>          with self.assertRaises(FdtException) as e:
>              self.fdt.get_path(-1)
> --
> 2.39.1
>



[Index of Archives]     [Device Tree]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux