On 2023/01/10 15:56, Tao Liu wrote: > Signed-off-by: Tao Liu <ltao@xxxxxxxxxx> > --- > help.c | 86 +++++++++++++++++++++++++++++++++++++++++++--------------- > 1 file changed, 64 insertions(+), 22 deletions(-) > > diff --git a/help.c b/help.c > index 367500f..b23a65f 100644 > --- a/help.c > +++ b/help.c > @@ -6307,19 +6307,20 @@ NULL > > char *help_tree[] = { > "tree", > -"display radix tree, XArray or red-black tree", > -"[-t [radix|xarray|rbtree]] [-r offset] [-[s|S] struct[.member[,member]]]\n -[x|d] [-o offset] [-l] [-p] [-N] start", > -" This command dumps the contents of a radix tree, an XAarray, or a red-black", > -" tree. The arguments are as follows:\n", > +"display radix tree, XArray, red-black tree or maple tree", > +"[-t [radix|xarray|rbtree|maple]] [-r offset] [-[s|S] struct[.member[,member]]]\n" > +" -[x|d] [-o offset] [-l] [-p] [-v] [-N] start", > +" This command dumps the contents of a radix tree, an XAarray, a red-black", > +" tree, or a maple tree. The arguments are as follows:\n", > " -t type The type of tree to dump; the type string can be one of ", > -" \"radix\", \"rbtree\", or \"xarray\", or alternatively, \"ra\",", > -" \"rb\" or \"x\" are acceptable. If not specified, rbtree is the", > -" default type.", > +" \"radix\", \"rbtree\", \"xarray\", or \"maple\", or alternatively,", > +" \"ra\", \"rb\", \"x\" or \"m\" are acceptable. If not specified,", > +" rbtree is the default type.", > " -r offset If the \"start\" argument is the address of a data structure that", > -" contains an radix_tree_root, xarray or rb_root structure, then this", > -" is the offset to that structure member. If the offset is non-zero,", > -" then this option is required. The offset may be entered in either", > -" of two manners:", > +" contains an radix_tree_root, maple_tree, xarray or rb_root", > +" structure, then this is the offset to that structure member. If", > +" the offset is non-zero, then this option is required. The offset", > +" may be entered in either of two manners:", > " 1. In \"structure.member\" format.", > " 2. A number of bytes.", > " -o offset For red-black trees only, the offset of the rb_node within its ", > @@ -6348,25 +6349,26 @@ char *help_tree[] = { > " -p Display the node's position information, showing the relationship", > " between it and the root. For red-black trees, a position that", > " indicates \"root/l/r\" means that the node is the right child", > -" of the left child of the root node. For radix trees and xarrays,", > -" the index, the height, and the slot index values are shown with", > -" respect to the root.", > +" of the left child of the root node. For radix trees, xarrays and", > +" maple trees, the index, the height, and the slot index values are", > +" shown with respect to the root.", > " -x Override default output format with hexadecimal format.", > " -d Override default output format with decimal format.", > +" -v For maple trees only, showing the contents of each maple tree node.", I will change "showing" to "dump". Thanks, Kazu > " ", > " The meaning of the \"start\" argument, which can be expressed either in", > " hexadecimal format or symbolically, depends upon whether the -N option", > " is prepended:", > " ", > -" start The address of a radix_tree_root, xarray or rb_root structure, or", > -" the address of a structure containing the radix_tree_root, xarray", > -" or rb_root structure; if the latter, then the \"-r offset\" option", > -" must be used if the member offset of the root structure is ", > -" non-zero.", > +" start The address of a radix_tree_root, maple_tree, xarray or rb_root", > +" structure, or the address of a structure containing the", > +" radix_tree_root, maple_tree, xarray or rb_root structure; if the", > +" latter, then the \"-r offset\" option must be used if the member", > +" offset of the root structure is non-zero.", > " ", > -" -N start The address of a radix_tree_node, xa_node or rb_node structure,", > -" bypassing the radix_tree_root, xarray, or rb_root that points", > -" to it.", > +" -N start The address of a radix_tree_node, maple_node, xa_node or rb_node", > +" structure, bypassing the radix_tree_root, maple_tree, xarray, or", > +" rb_root that points to it.", > "", > "\nEXAMPLES", > " The vmap_area_root is a standalone rb_root structure. Display the ", > @@ -6703,6 +6705,46 @@ char *help_tree[] = { > " _refcount = {", > " counter = 0x1", > " }", > +"", > +" The -v option is introduced specifically for dumping the complete content of", > +" maple tree:", > +"", > +" %s> tree -t maple 0xffff9034c006aec0 -v", > +"", > +" maple_tree(ffff9034c006aec0) flags 309, height 2 root 0xffff9034de70041e", > +"", > +" 0-18446744073709551615: node 0xffff9034de700400 depth 0 type 3 parent ...", > +" 0-140112331583487: node 0xffff9034c01e8800 depth 1 type 1 parent ...", > +" 0-94643156942847: 0x0", > +" 94643156942848-94643158024191: 0xffff9035131754c0", > +" 94643158024192-94643160117247: 0x0", > +" ...", > +"", > +" The old tree args can work as well for maple tree:", > +"", > +" %s> tree -t maple -r mm_struct.mm_mt 0xffff9034c006aec0 -p", > +" ffff9035131754c0", > +" index: 1 position: root/0/1", > +" ffff9035131751c8", > +" index: 2 position: root/0/3", > +" ffff9035131757b8", > +" index: 3 position: root/0/4", > +" ...", > +"", > +" %s> tree -t maple 0xffff9034c006aec0 -p -x -s vm_area_struct.vm_start,vm_end", > +" ffff9035131754c0", > +" index: 1 position: root/0/1", > +" vm_start = 0x5613d3c00000,", > +" vm_end = 0x5613d3d08000,", > +" ffff9035131751c8", > +" index: 2 position: root/0/3", > +" vm_start = 0x5613d3f07000,", > +" vm_end = 0x5613d3f0b000,", > +" ffff9035131757b8", > +" index: 3 position: root/0/4", > +" vm_start = 0x5613d3f0b000,", > +" vm_end = 0x5613d3f14000,", > +" ....", > NULL > }; > -- Crash-utility mailing list Crash-utility@xxxxxxxxxx https://listman.redhat.com/mailman/listinfo/crash-utility Contribution Guidelines: https://github.com/crash-utility/crash/wiki