Skip to content
  • David Gibson's avatar
    libfdt: Rework fdt_next_node() · 2c0b843e
    David Gibson authored
    
    
    Currently fdt_next_node() will find the next node in the blob
    regardless of whether it is above, below or at the same level in the
    tree as the starting node - the depth parameter is updated to indicate
    which is the case.  When a depth parameter is supplied, this patch
    makes it instead terminate immediately when it finds the END_NODE tag
    for a node at depth 0.  In this case it returns the offset immediately
    past the END_NODE tag.
    
    This has a couple of advantages.  First, this slightly simplifies
    fdt_subnode_offset(), which no longer needs to explicitly check that
    fdt_next_node()'s iteration hasn't left the starting node.  Second,
    this allows fdt_next_node() to be used to implement
    _fdt_node_end_offset() considerably simplifying the latter function.
    
    The other users of fdt_next_node() either don't need to iterate out of
    the starting node, or don't pass a depth parameter at all.  Any
    callers that really need to iterate out of the starting node, but keep
    tracking depth can do so by biasing the initial depth value.
    
    This is a semantic change, but I think it's very unlikely to break any
    existing library users.
    
    Signed-off-by: default avatarDavid Gibson <david@gibson.dropbear.id.au>
    2c0b843e