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