• Kieran Bingham's avatar
    scripts/gdb: add a Radix Tree Parser · b7235d6b
    Kieran Bingham authored
    Linux makes use of the Radix Tree data structure to store pointers indexed
    by integer values.  This structure is utilised across many structures in
    the kernel including the IRQ descriptor tables, and several filesystems.
    
    This module provides a method to lookup values from a structure given its
    head node.
    
    Usage:
    
    The function lx_radix_tree_lookup, must be given a symbol of type struct
    radix_tree_root, and an index into that tree.
    
    The object returned is a generic integer value, and must be cast correctly
    to the type based on the storage in the data structure.
    
    For example, to print the irq descriptor in the sparse irq_desc_tree at
    index 18, try the following:
    
    (gdb) print (struct irq_desc)$lx_radix_tree_lookup(irq_desc_tree, 18)
    
    This script previously existed under commit
    e127a73d ("scripts/gdb: add a Radix Tree
    Parser") and was later reverted with
    b447e025i (Revert "scripts/gdb: add a
    Radix Tree Parser").
    
    This version expects the XArray based radix tree implementation and has
    been verified using QEMU/x86 on Linux 6.3-rc5.
    
    [f.fainelli@gmail.com: revive and update for xarray implementation]
    [f.fainelli@gmail.com: guard against a NULL node in the while loop]
      Link: https://lkml.kernel.org/r/20230405222743.1191674-1-f.fainelli@gmail.com
    Link: https://lkml.kernel.org/r/20230404214049.1016811-1-f.fainelli@gmail.comSigned-off-by: default avatarKieran Bingham <kieran.bingham@linaro.org>
    Signed-off-by: default avatarFlorian Fainelli <f.fainelli@gmail.com>
    Cc: Jan Kiszka <jan.kiszka@siemens.com>
    Cc: Kieran Bingham <kbingham@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    b7235d6b
vmlinux-gdb.py 928 Bytes