Re: [PATCH 04/10] pylibfdt: Add support for reading the memory reserve map

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



On Wed, May 23, 2018 at 10:03:40PM -0600, Simon Glass wrote:
> Add a way to access this information from Python.
> 
> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>

Reviewed-by: David Gibson <david@xxxxxxxxxxxxxxxxxxxxx>

> ---
> 
>  pylibfdt/libfdt.i       | 34 ++++++++++++++++++++++++++++++++++
>  tests/pylibfdt_tests.py |  8 ++++++++
>  2 files changed, 42 insertions(+)
> 
> diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
> index e837168..c0cd096 100644
> --- a/pylibfdt/libfdt.i
> +++ b/pylibfdt/libfdt.i
> @@ -313,6 +313,25 @@ class Fdt:
>          """
>          return check_err(fdt_size_dt_struct(self._fdt))
>  
> +    def num_mem_rsv(self, quiet=()):
> +        """Return the number of memory reserve-map records
> +
> +        Returns:
> +            Number of memory reserve-map records
> +        """
> +        return check_err(fdt_num_mem_rsv(self._fdt), quiet)
> +
> +    def get_mem_rsv(self, index, quiet=()):
> +        """Return the indexed memory reserve-map record
> +
> +        Args:
> +            index: Record to return (0=first)
> +
> +        Returns:
> +            Number of memory reserve-map records
> +        """
> +        return check_err(fdt_get_mem_rsv(self._fdt, index), quiet)
> +
>      def subnode_offset(self, parentoffset, name, quiet=()):
>          """Get the offset of a named subnode
>  
> @@ -618,6 +637,21 @@ typedef int fdt32_t;
>  
>  %apply int *depth { int *depth };
>  
> +/* typemaps for fdt_get_mem_rsv */
> +%typemap(in, numinputs=0) uint64_t * (uint64_t temp) {
> +   $1 = &temp;
> +}
> +
> +%typemap(argout) uint64_t * {
> +        PyObject *val = PyLong_FromUnsignedLong(*arg$argnum);
> +        if (!result) {
> +           if (PyTuple_GET_SIZE(resultobj) == 0)
> +              resultobj = val;
> +           else
> +              resultobj = SWIG_Python_AppendOutput(resultobj, val);
> +        }
> +}
> +
>  /* We have both struct fdt_property and a function fdt_property() */
>  %warnfilter(302) fdt_property;
>  
> diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
> index 8316499..ca27b0b 100644
> --- a/tests/pylibfdt_tests.py
> +++ b/tests/pylibfdt_tests.py
> @@ -369,5 +369,13 @@ class PyLibfdtTests(unittest.TestCase):
>                            self.get_prop("prop-uint64").as_uint64())
>          self.assertEquals(-2, self.get_prop("prop-int64").as_int64())
>  
> +    def testReserveMap(self):
> +        """Test that we can access the memory reserve map"""
> +        self.assertEquals(2, self.fdt.num_mem_rsv())
> +        self.assertEquals([ 0xdeadbeef00000000, 0x100000],
> +                          self.fdt.get_mem_rsv(0))
> +        self.assertEquals([123456789, 010000], self.fdt.get_mem_rsv(1))
> +
> +
>  if __name__ == "__main__":
>      unittest.main()

-- 
David Gibson			| I'll have my music baroque, and my code
david AT gibson.dropbear.id.au	| minimalist, thank you.  NOT _the_ _other_
				| _way_ _around_!
http://www.ozlabs.org/~dgibson

Attachment: signature.asc
Description: PGP signature


[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