Re: [PATCH 2/2] pylibfdt: Add a means to add and delete notes

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



On Tue, Sep 11, 2018 at 03:28:39AM -0600, Simon Glass wrote:
> These methods are needed to permit larger changes to the device tree blob.
> Add two new methods and an associate test.
> 
> Signed-off-by: Simon Glass <sjg@xxxxxxxxxxxx>

Applied, thanks.

> ---
> 
>  pylibfdt/libfdt.i       | 29 +++++++++++++++++++++++++++++
>  tests/pylibfdt_tests.py | 31 +++++++++++++++++++++++++++++++
>  2 files changed, 60 insertions(+)
> 
> diff --git a/pylibfdt/libfdt.i b/pylibfdt/libfdt.i
> index 12d2812..842e7b6 100644
> --- a/pylibfdt/libfdt.i
> +++ b/pylibfdt/libfdt.i
> @@ -689,6 +689,35 @@ class Fdt(FdtRo):
>          """
>          return check_err(fdt_delprop(self._fdt, nodeoffset, prop_name), quiet)
>  
> +    def add_subnode(self, parentoffset, name, quiet=()):
> +        """Add a new subnode to a node
> +
> +        Args:
> +            parentoffset: Parent offset to add the subnode to
> +            name: Name of node to add
> +
> +        Returns:
> +            offset of the node created, or negative error code on failure
> +
> +        Raises:
> +            FdtError if there is not enough space, or another error occurs
> +        """
> +        return check_err(fdt_add_subnode(self._fdt, parentoffset, name), quiet)
> +
> +    def del_node(self, nodeoffset, quiet=()):
> +        """Delete a node
> +
> +        Args:
> +            nodeoffset: Offset of node to delete
> +
> +        Returns:
> +            Error code, or 0 if OK
> +
> +        Raises:
> +            FdtError if an error occurs
> +        """
> +        return check_err(fdt_del_node(self._fdt, nodeoffset), quiet)
> +
>  
>  class Property(bytearray):
>      """Holds a device tree property name and value.
> diff --git a/tests/pylibfdt_tests.py b/tests/pylibfdt_tests.py
> index e61fda9..fbb1ce2 100644
> --- a/tests/pylibfdt_tests.py
> +++ b/tests/pylibfdt_tests.py
> @@ -139,6 +139,24 @@ class PyLibfdtBasicTests(unittest.TestCase):
>              poffset = self.fdt.next_property_offset(poffset, QUIET_NOTFOUND)
>          return prop_list
>  
> +    def GetSubnodes(self, node_path):
> +        """Read a list of subnodes from a node
> +
> +        Args:
> +            node_path: Full path to node, e.g. '/subnode@1/subsubnode'
> +
> +        Returns:
> +            List of subnode names for that node, e.g. ['subsubnode', 'ss1']
> +        """
> +        subnode_list = []
> +        node = self.fdt.path_offset(node_path)
> +        offset = self.fdt.first_subnode(node, QUIET_NOTFOUND)
> +        while offset > 0:
> +            name = self.fdt.get_name(offset)
> +            subnode_list.append(name)
> +            offset = self.fdt.next_subnode(offset, QUIET_NOTFOUND)
> +        return subnode_list
> +
>      def testImport(self):
>          """Check that we can import the library correctly"""
>          self.assertEquals(type(libfdt), types.ModuleType)
> @@ -495,6 +513,19 @@ class PyLibfdtBasicTests(unittest.TestCase):
>              self.fdt.set_name(node, 'name\0')
>          self.assertIn('embedded nul', str(e.exception))
>  
> +    def testAddDeleteNodes(self):
> +        """Test that we can add and delete nodes"""
> +        node_name = '/subnode@1'
> +        self.assertEquals(self.GetSubnodes(node_name), ['subsubnode', 'ss1'])
> +        node = self.fdt.path_offset('%s/subsubnode' % node_name)
> +        self.assertEquals(self.fdt.del_node(node, 'subsubnode'), 0)
> +        self.assertEquals(self.GetSubnodes(node_name), ['ss1'])
> +
> +        node = self.fdt.path_offset(node_name)
> +        offset = self.fdt.add_subnode(node, 'more')
> +        self.assertTrue(offset > 0)
> +        self.assertEquals(self.GetSubnodes(node_name), ['more', 'ss1'])
> +
>  
>  class PyLibfdtSwTests(unittest.TestCase):
>      """Test class for pylibfdt sequential-write DT creation

-- 
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