On Thu, May 17, 2018 at 11:09:13PM -0600, Simon Glass wrote: > When calling libfdt functions which are not supported by the Fdt class it > is necessary to get direct access to the device tree data. At present this > requries using the internal _fdt member. Add a new method to provide > public access to this, without allowing the data to be changed. > > Note that a bytearray type is returned rather than str, since the swig > types are set up for bytearray to map correctly to const void *. > > Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx> Applied, thanks. > --- > > Changes in v3: > - Copy the bytearray before returning it, so the data cannot be changed > > Changes in v2: > - Change from get_fdt() to as_bytearray() > > pylibfdt/libfdt.i | 11 +++++++++++ > tests/pylibfdt_tests.py | 5 +++-- > 2 files changed, 14 insertions(+), 2 deletions(-) > > diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i > index 415820d..29695bb 100644 > --- a/pylibfdt/libfdt.i > +++ b/pylibfdt/libfdt.i > @@ -174,6 +174,17 @@ class Fdt: > self._fdt = bytearray(data) > check_err(fdt_check_header(self._fdt)); > > + def as_bytearray(self): > + """Get the device tree contents as a bytearray > + > + This can be passed directly to libfdt functions that access a > + const void * for the device tree. > + > + Returns: > + bytearray containing the device tree > + """ > + return bytearray(self._fdt) > + > def subnode_offset(self, parentoffset, name, quiet=()): > """Get the offset of a named subnode > > diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py > index 95d911a..0ec0f38 100644 > --- a/tests/pylibfdt_tests.py > +++ b/tests/pylibfdt_tests.py > @@ -297,9 +297,10 @@ class PyLibfdtTests(unittest.TestCase): > > def testIntegers(self): > """Check that integers can be passed and returned""" > - self.assertEquals(0, libfdt.fdt_get_phandle(self.fdt._fdt, 0)) > + self.assertEquals(0, libfdt.fdt_get_phandle(self.fdt.as_bytearray(), 0)) > node2 = self.fdt.path_offset('/subnode@2') > - self.assertEquals(0x2000, libfdt.fdt_get_phandle(self.fdt._fdt, node2)) > + self.assertEquals( > + 0x2000, libfdt.fdt_get_phandle(self.fdt.as_bytearray(), node2)) > > def testGetPhandle(self): > """Test for the get_phandle() method""" -- 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