On 2023/01/10 15:56, Tao Liu wrote:
> Signed-off-by: Tao Liu <l...@redhat.com>
> ---
>   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@redhat.com
https://listman.redhat.com/mailman/listinfo/crash-utility
Contribution Guidelines: https://github.com/crash-utility/crash/wiki

Reply via email to