[syslinux:disklib] chain.c32, libcom32: Move int13_retry() as disk_int13_retry()
syslinux-bot for Shao Miller
shao.miller at yrdsb.edu.on.ca
Sun Jul 25 17:33:07 PDT 2010
Commit-ID: 8f0f42100f43a52e957c7c6feec0d2fcb21d0b6e
Gitweb: http://syslinux.zytor.com/commit/8f0f42100f43a52e957c7c6feec0d2fcb21d0b6e
Author: Shao Miller <shao.miller at yrdsb.edu.on.ca>
AuthorDate: Mon, 28 Jun 2010 00:59:17 -0400
Committer: Shao Miller <shao.miller at yrdsb.edu.on.ca>
CommitDate: Sat, 10 Jul 2010 01:00:47 -0400
chain.c32, libcom32: Move int13_retry() as disk_int13_retry()
Moving portions of chain.c32 into libcom32.
Signed-off-by: Shao Miller <shao.miller at yrdsb.edu.on.ca>
---
com32/include/syslinux/disk.h | 4 ++++
com32/lib/syslinux/disk.c | 23 +++++++++++++++++++++++
com32/modules/chain.c | 24 ++----------------------
3 files changed, 29 insertions(+), 22 deletions(-)
diff --git a/com32/include/syslinux/disk.h b/com32/include/syslinux/disk.h
index 482dece..83db05c 100644
--- a/com32/include/syslinux/disk.h
+++ b/com32/include/syslinux/disk.h
@@ -36,6 +36,10 @@
#ifndef _SYSLINUX_DISK_H
#define _SYSLINUX_DISK_H
+#include <com32.h>
+
#define SECTOR 512 /* bytes/sector */
+extern int disk_int13_retry(const com32sys_t * inreg, com32sys_t * outreg);
+
#endif /* _SYSLINUX_DISK_H */
diff --git a/com32/lib/syslinux/disk.c b/com32/lib/syslinux/disk.c
index 2a286e4..7be59f2 100644
--- a/com32/lib/syslinux/disk.c
+++ b/com32/lib/syslinux/disk.c
@@ -34,3 +34,26 @@
*/
#include <syslinux/disk.h>
+
+/**
+ * Call int 13h, but with retry on failure. Especially floppies need this.
+ *
+ * @v inreg CPU register settings upon INT call
+ * @v outreg CPU register settings returned by INT call
+ */
+int disk_int13_retry(const com32sys_t * inreg, com32sys_t * outreg)
+{
+ int retry = 6; /* Number of retries */
+ com32sys_t tmpregs;
+
+ if (!outreg)
+ outreg = &tmpregs;
+
+ while (retry--) {
+ __intcall(0x13, inreg, outreg);
+ if (!(outreg->eflags.l & EFLAGS_CF))
+ return 0; /* CF=0, OK */
+ }
+
+ return -1; /* Error */
+}
diff --git a/com32/modules/chain.c b/com32/modules/chain.c
index d6005e2..19afa05 100644
--- a/com32/modules/chain.c
+++ b/com32/modules/chain.c
@@ -146,26 +146,6 @@ static inline void error(const char *msg)
}
/*
- * Call int 13h, but with retry on failure. Especially floppies need this.
- */
-static int int13_retry(const com32sys_t * inreg, com32sys_t * outreg)
-{
- int retry = 6; /* Number of retries */
- com32sys_t tmpregs;
-
- if (!outreg)
- outreg = &tmpregs;
-
- while (retry--) {
- __intcall(0x13, inreg, outreg);
- if (!(outreg->eflags.l & EFLAGS_CF))
- return 0; /* CF=0, OK */
- }
-
- return -1; /* Error */
-}
-
-/*
* Query disk parameters and EBIOS availability for a particular disk.
*/
struct diskinfo {
@@ -287,7 +267,7 @@ static void *read_sectors(uint64_t lba, uint8_t count)
inreg.es = SEG(buf);
}
- if (int13_retry(&inreg, NULL))
+ if (disk_int13_retry(&inreg, NULL))
return NULL;
data = malloc(count * SECTOR);
@@ -347,7 +327,7 @@ static int write_sector(unsigned int lba, const void *data)
inreg.es = SEG(buf);
}
- if (int13_retry(&inreg, NULL))
+ if (disk_int13_retry(&inreg, NULL))
return -1;
return 0; /* ok */
More information about the Syslinux-commits
mailing list