]> git.ipfire.org Git - people/teissler/ipfire-2.x.git/blobdiff - src/patches/pciutils-havepread.patch
Kudzu, ReiserFS, uClibc, gettext und Arbeit am Installer
[people/teissler/ipfire-2.x.git] / src / patches / pciutils-havepread.patch
diff --git a/src/patches/pciutils-havepread.patch b/src/patches/pciutils-havepread.patch
new file mode 100644 (file)
index 0000000..56fbff3
--- /dev/null
@@ -0,0 +1,57 @@
+--- pciutils-2.1.99-test8/lib/pread.h.pread    2004-08-13 16:15:46.000000000 -0400
++++ pciutils-2.1.99-test8/lib/pread.h  2004-08-31 00:30:03.168157294 -0400
+@@ -12,54 +12,6 @@
+  *  don't define it.
+  */
+-#if defined(__GLIBC__) && __GLIBC__ == 2 && __GLIBC_MINOR__ > 0
+-/* glibc 2.1 or newer -> pread/pwrite supported automatically */
+-
+-#elif defined(i386) && defined(__GLIBC__)
+-/* glibc 2.0 on i386 -> call syscalls directly */
+-#include <asm/unistd.h>
+-#include <syscall-list.h>
+-#ifndef SYS_pread
+-#define SYS_pread 180
+-#endif
+-static int pread(unsigned int fd, void *buf, size_t size, loff_t where)
+-{ return syscall(SYS_pread, fd, buf, size, where); }
+-#ifndef SYS_pwrite
+-#define SYS_pwrite 181
+-#endif
+-static int pwrite(unsigned int fd, void *buf, size_t size, loff_t where)
+-{ return syscall(SYS_pwrite, fd, buf, size, where); }
+-
+-#elif defined(i386)
+-/* old libc on i386 -> call syscalls directly the old way */
+-#include <asm/unistd.h>
+-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 PCI_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, int where)        \
+-      {                                                                                       \
+-        struct pci_access *a = d->access;                                                     \
+-        int r;                                                                                \
+-        if (a->fd_pos != where && lseek(fd, where, SEEK_SET) < 0)                             \
+-          return -1;                                                                          \
+-        r = op(fd, buf, size);                                                                \
+-        if (r < 0)                                                                            \
+-          a->fd_pos = -1;                                                                     \
+-        else                                                                                  \
+-          a->fd_pos = where + r;                                                              \
+-        return r;                                                                             \
+-      }
+-make_rw_glue(read)
+-make_rw_glue(write)
+-#define PCI_HAVE_DO_READ
+-#endif
+-
+ #ifndef PCI_HAVE_DO_READ
+ #define do_read(d,f,b,l,p) pread(f,b,l,p)
+ #define do_write(d,f,b,l,p) pwrite(f,b,l,p)