summaryrefslogtreecommitdiff
path: root/hw
diff options
context:
space:
mode:
authorDavid Nusinow <dnusinow@debian.org>2007-05-28 21:42:10 -0400
committerDavid Nusinow <dnusinow@debian.org>2007-05-28 21:42:10 -0400
commit6bf8d5019313ee2251a44dfb7ad3435a3c6db7eb (patch)
tree174d8a37eb379ac1d6a84a263865569e0278883a /hw
parent6fdd134a0c3e6fdde9b089100e8783705c9cc6ac (diff)
Read ROM in chunks
This patch speeds up reads of the ROM by reading in large chunks rather than one byte at a time. This patch was by Dann Frazier.
Diffstat (limited to 'hw')
-rw-r--r--hw/xfree86/os-support/bus/linuxPci.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/hw/xfree86/os-support/bus/linuxPci.c b/hw/xfree86/os-support/bus/linuxPci.c
index 2aaa89cc2..3d8266e49 100644
--- a/hw/xfree86/os-support/bus/linuxPci.c
+++ b/hw/xfree86/os-support/bus/linuxPci.c
@@ -788,8 +788,10 @@ xf86ReadDomainMemory(PCITAG Tag, ADDRESS Base, int Len, unsigned char *Buf)
write(fd, "1", 2);
lseek(fd, 0, SEEK_SET);
+ len = min(Len, st.st_size);
+
/* copy the ROM until we hit Len, EOF or read error */
- for (i = 0; i < Len && read(fd, Buf, 1) > 0; Buf++, i++)
+ for (; len && (size = read(fd, Buf, len)) > 0 ; Buf+=size, len-=size)
;
write(fd, "0", 2);