summaryrefslogtreecommitdiffstats
path: root/sys/dev
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2002-03-13 16:32:11 +0000
committerimp <imp@FreeBSD.org>2002-03-13 16:32:11 +0000
commit93a919ffc183c3da766d03e3bfeae79a246f2a3f (patch)
treeede133a6d47fa0954007582d38037be63f3d1eef /sys/dev
parent7918719dc73ff8f4e35f6f25868c4381e2c91666 (diff)
downloadFreeBSD-src-93a919ffc183c3da766d03e3bfeae79a246f2a3f.zip
FreeBSD-src-93a919ffc183c3da766d03e3bfeae79a246f2a3f.tar.gz
Add 5th parameter to pci_read_device specifying the size of the object
to create.
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pci/pci.c9
-rw-r--r--sys/dev/pci/pci_private.h3
2 files changed, 6 insertions, 6 deletions
diff --git a/sys/dev/pci/pci.c b/sys/dev/pci/pci.c
index 7a758ae..af6500b 100644
--- a/sys/dev/pci/pci.c
+++ b/sys/dev/pci/pci.c
@@ -310,7 +310,7 @@ pci_hdrtypedata(device_t pcib, int b, int s, int f, pcicfgregs *cfg)
/* read configuration header into pcicfgregs structure */
struct pci_devinfo *
-pci_read_device(device_t pcib, int b, int s, int f)
+pci_read_device(device_t pcib, int b, int s, int f, size_t size)
{
#define REG(n, w) PCIB_READ_CONFIG(pcib, b, s, f, n, w)
pcicfgregs *cfg = NULL;
@@ -322,8 +322,7 @@ pci_read_device(device_t pcib, int b, int s, int f)
devlist_entry = NULL;
if (PCIB_READ_CONFIG(pcib, b, s, f, PCIR_DEVVENDOR, 4) != -1) {
- devlist_entry = malloc(sizeof(struct pci_devinfo),
- M_DEVBUF, M_WAITOK | M_ZERO);
+ devlist_entry = malloc(size, M_DEVBUF, M_WAITOK | M_ZERO);
if (devlist_entry == NULL)
return (NULL);
@@ -779,8 +778,8 @@ pci_add_children(device_t dev, int busno)
for (s = 0; s <= maxslots; s++) {
int pcifunchigh = 0;
for (f = 0; f <= pcifunchigh; f++) {
- struct pci_devinfo *dinfo =
- pci_read_device(pcib, busno, s, f);
+ struct pci_devinfo *dinfo = pci_read_device(pcib,
+ busno, s, f, sizeof(struct pci_devinfo));
if (dinfo != NULL) {
if (dinfo->cfg.mfdev)
pcifunchigh = PCI_FUNCMAX;
diff --git a/sys/dev/pci/pci_private.h b/sys/dev/pci/pci_private.h
index 9c6e6f5..cb43cef 100644
--- a/sys/dev/pci/pci_private.h
+++ b/sys/dev/pci/pci_private.h
@@ -60,7 +60,8 @@ struct resource *pci_alloc_resource(device_t dev, device_t child,
void pci_delete_resource(device_t dev, device_t child,
int type, int rid);
struct resource_list *pci_get_resource_list (device_t dev, device_t child);
-struct pci_devinfo *pci_read_device(device_t pcib, int b, int s, int f);
+struct pci_devinfo *pci_read_device(device_t pcib, int b, int s, int f,
+ size_t size);
void pci_print_verbose(struct pci_devinfo *dinfo);
int pci_freecfg(struct pci_devinfo *dinfo);
OpenPOWER on IntegriCloud