]> mj.ucw.cz Git - pciutils.git/blobdiff - lspci.h
libpci: win32-cfgmgr32: Fix parsing paths in NT format
[pciutils.git] / lspci.h
diff --git a/lspci.h b/lspci.h
index c498b7c970e64e8eb409056112877f2b88445581..62d8e927adb1ac06fa804ba7bfed5b4a92abff6b 100644 (file)
--- a/lspci.h
+++ b/lspci.h
@@ -1,7 +1,7 @@
 /*
  *     The PCI Utilities -- List All PCI Devices
  *
- *     Copyright (c) 1997--2008 Martin Mares <mj@ucw.cz>
+ *     Copyright (c) 1997--2018 Martin Mares <mj@ucw.cz>
  *
  *     Can be freely distributed and used under the terms of the GNU GPL.
  */
@@ -14,7 +14,7 @@
  *  This increases our memory footprint, but only slightly since we don't
  *  use alloca() much.
  */
-#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__)
+#if defined (__FreeBSD__) || defined (__NetBSD__) || defined (__OpenBSD__) || defined (__DragonFly__) || defined (__DJGPP__)
 /* alloca() is defined in stdlib.h */
 #elif defined(__GNUC__) && !defined(PCI_OS_WINDOWS)
 #include <alloca.h>
@@ -34,6 +34,12 @@ extern char *opt_pcimap;
 struct device {
   struct device *next;
   struct pci_dev *dev;
+  /* Bus topology calculated by grow_tree() */
+  struct device *bus_next;
+  struct bus *parent_bus;
+  struct bridge *bridge;
+  /* Cache */
+  int no_config_access;
   unsigned int config_cached, config_bufsize;
   byte *config;                                /* Cached configuration space data */
   byte *present;                       /* Maps which configuration bytes are present */
@@ -50,9 +56,11 @@ u32 get_conf_long(struct device *d, unsigned int pos);
 word get_conf_word(struct device *d, unsigned int pos);
 byte get_conf_byte(struct device *d, unsigned int pos);
 
-void get_subid(struct device *d, word *subvp, word *subdp);
+/* Useful macros for decoding of bits and bit fields */
 
 #define FLAG(x,y) ((x & y) ? '+' : '-')
+#define BITS(x,at,width) (((x) >> (at)) & ((1 << (width)) - 1))
+#define TABLE(tab,x,buf) ((x) < sizeof(tab)/sizeof((tab)[0]) ? (tab)[x] : (sprintf((buf), "??%d", (x)), (buf)))
 
 /* ls-vpd.c */
 
@@ -60,20 +68,45 @@ void cap_vpd(struct device *d);
 
 /* ls-caps.c */
 
-void show_caps(struct device *d);
+void show_caps(struct device *d, int where);
 
 /* ls-ecaps.c */
 
-void show_ext_caps(struct device *d);
+void show_ext_caps(struct device *d, int type);
+
+/* ls-caps-vendor.c */
+
+void show_vendor_caps(struct device *d, int where, int cap);
 
 /* ls-kernel.c */
 
 void show_kernel_machine(struct device *d UNUSED);
 void show_kernel(struct device *d UNUSED);
+void show_kernel_cleanup(void);
 
 /* ls-tree.c */
 
-void show_forest(void);
+struct bridge {
+  struct bridge *chain;                        /* Single-linked list of bridges */
+  struct bridge *next, *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 */
+  struct device *br_dev;
+};
+
+struct bus {
+  unsigned int domain;
+  unsigned int number;
+  struct bus *sibling;
+  struct bridge *parent_bridge;
+  struct device *first_dev, **last_dev;
+};
+
+extern struct bridge host_bridge;
+
+void grow_tree(void);
+void show_forest(struct pci_filter *filter);
 
 /* ls-map.c */