]> git.ipfire.org Git - thirdparty/pciutils.git/commitdiff
ls-tree: Print PCI domains in ascending order
authorPali Rohár <pali@kernel.org>
Sat, 22 Apr 2023 09:48:55 +0000 (11:48 +0200)
committerPali Rohár <pali@kernel.org>
Sat, 29 Apr 2023 12:28:09 +0000 (14:28 +0200)
ls-tree.c
lspci.h

index 43ff9b1ae47ca320a38ef3cb64b9c5be869c6a41..e21e44ce3cdb9160ce4a3248943ba38e5f9221c7 100644 (file)
--- a/ls-tree.c
+++ b/ls-tree.c
@@ -12,7 +12,7 @@
 
 #include "lspci.h"
 
-struct bridge host_bridge = { NULL, NULL, NULL, NULL, NULL, 0, ~0, 0, ~0, NULL };
+struct bridge host_bridge = { NULL, NULL, NULL, NULL, NULL, NULL, ~0, ~0, ~0, ~0, NULL };
 
 static struct bus *
 find_bus(struct bridge *b, unsigned int domain, unsigned int n)
@@ -127,7 +127,7 @@ grow_tree(void)
       b->subordinate = ~0;
       *last_br = b;
       last_br = &b->chain;
-      b->prev = b->child = NULL;
+      b->prev = b->next = b->child = NULL;
       b->first_bus = NULL;
       b->last_bus = NULL;
       b->br_dev = NULL;
@@ -160,7 +160,7 @@ grow_tree(void)
            }
          *last_br = b;
          last_br = &b->chain;
-         b->prev = b->child = NULL;
+         b->prev = b->next = b->child = NULL;
          b->first_bus = NULL;
          b->last_bus = NULL;
          b->br_dev = d;
@@ -188,7 +188,7 @@ grow_tree(void)
       b->subordinate = b->secondary;
       *last_br = b;
       last_br = &b->chain;
-      b->prev = b->child = NULL;
+      b->prev = b->next = b->child = NULL;
       b->first_bus = NULL;
       b->last_bus = NULL;
       b->br_dev = parent;
@@ -459,6 +459,8 @@ show_forest(struct pci_filter *filter)
   if (host_bridge.child)
     {
       for (b=host_bridge.child; b->prev; b=b->prev)
+        b->prev->next = b;
+      for (; b; b=b->next)
         show_tree_bridge(filter, b, line, line);
     }
 }
diff --git a/lspci.h b/lspci.h
index d6a27a2aee319018a49c01a9c0b0cbb79caa0ad1..160c65a2a968ddde2c1721e8ca7ecd407a06504e 100644 (file)
--- a/lspci.h
+++ b/lspci.h
@@ -88,7 +88,7 @@ void show_kernel_cleanup(void);
 
 struct bridge {
   struct bridge *chain;                        /* Single-linked list of bridges */
-  struct bridge *prev, *child;         /* Tree of bridges */
+  struct bridge *next, *prev, *child;  /* Tree of bridges */
   struct bus *first_bus, *last_bus;    /* List of buses connected to this bridge */
   unsigned int domain;
   unsigned int primary, secondary, subordinate;        /* Bus numbers */