X-Git-Url: http://mj.ucw.cz/gitweb/?a=blobdiff_plain;f=lib%2Fproc.c;h=6bcf44b0b830cf2792b2de285b9183ad6f0d6e71;hb=239ff18adf556b63a16be968725ba9fd0e6d5227;hp=5b67d65311d85f033144b8019ea673d0c30412a3;hpb=7f5afd830cb509bf24b6c89aef63f4f6b6b3b9fd;p=pciutils.git diff --git a/lib/proc.c b/lib/proc.c index 5b67d65..6bcf44b 100644 --- a/lib/proc.c +++ b/lib/proc.c @@ -1,9 +1,9 @@ /* - * $Id: proc.c,v 1.6 1999/08/31 05:58:07 ecd Exp $ + * $Id: proc.c,v 1.10 2002/12/26 20:24:08 mj Exp $ * * The PCI Library -- Configuration Access via /proc/bus/pci * - * Copyright (c) 1997--1999 Martin Mares + * Copyright (c) 1997--1999 Martin Mares * * Can be freely distributed and used under the terms of the GNU GPL. */ @@ -46,13 +46,16 @@ static int pwrite(unsigned int fd, void *buf, size_t size, loff_t where) #elif defined(i386) /* old libc on i386 -> call syscalls directly the old way */ #include -static _syscall4(int, pread, unsigned int, fd, void *, buf, size_t, size, loff_t, where); -static _syscall4(int, pwrite, unsigned int, fd, void *, buf, size_t, size, loff_t, where); +static _syscall5(int, pread, unsigned int, fd, void *, buf, size_t, size, u32, where_lo, u32, where_hi); +static _syscall5(int, pwrite, unsigned int, fd, void *, buf, size_t, size, u32, where_lo, u32, where_hi); +static int do_read(struct pci_dev *d UNUSED, int fd, void *buf, size_t size, int where) { return pread(fd, buf, size, where, 0); } +static int do_write(struct pci_dev *d UNUSED, int fd, void *buf, size_t size, int where) { return pwrite(fd, buf, size, where, 0); } +#define HAVE_DO_READ #else /* In all other cases we use lseek/read/write instead to be safe */ #define make_rw_glue(op) \ - static int do_##op(struct pci_dev *d, int fd, void *buf, size_t size, loff_t where) \ + static int do_##op(struct pci_dev *d, int fd, void *buf, size_t size, int where) \ { \ struct pci_access *a = d->access; \ int r; \ @@ -157,6 +160,7 @@ proc_scan(struct pci_access *a) d->func = PCI_FUNC(dfn & 0xff); d->vendor_id = vend >> 16U; d->device_id = vend & 0xffff; + d->hdrtype = pci_read_byte(d, PCI_HEADER_TYPE); known = PCI_FILL_IDENT; if (!a->buscentric) {