aboutsummaryrefslogtreecommitdiffstats
path: root/src/cdrom.c
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2011-08-04 19:36:27 +0200
committerKevin O'Connor <kevin@koconnor.net>2011-08-06 13:57:52 -0400
commitd7a7cf3a437faa6d56d5dbb060480601ef90799e (patch)
treefc0eade1bde294431ebc44887a7dd4d69359bc2d /src/cdrom.c
parent32f03876f4528cc74fde2624e2b5a1c756929453 (diff)
downloadseabios-d7a7cf3a437faa6d56d5dbb060480601ef90799e.tar.gz
ahci/cdrom: shared bounce buffer
This patch creates a common bounce buffer in block.c which is shared by the cdrom and ahci drivers. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'src/cdrom.c')
-rw-r--r--src/cdrom.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/src/cdrom.c b/src/cdrom.c
index 3769dfa6..6351fec0 100644
--- a/src/cdrom.c
+++ b/src/cdrom.c
@@ -18,7 +18,6 @@
****************************************************************/
struct drive_s *cdemu_drive_gf VAR16VISIBLE;
-u8 *cdemu_buf_fl VAR16VISIBLE;
static int
cdemu_read(struct disk_op_s *op)
@@ -33,7 +32,7 @@ cdemu_read(struct disk_op_s *op)
int count = op->count;
op->count = 0;
- u8 *cdbuf_fl = GET_GLOBAL(cdemu_buf_fl);
+ u8 *cdbuf_fl = GET_GLOBAL(bounce_buf_fl);
if (op->lba & 3) {
// Partial read of first block.
@@ -111,17 +110,16 @@ cdemu_setup(void)
return;
if (!CDCount)
return;
+ if (bounce_buf_init() < 0)
+ return;
struct drive_s *drive_g = malloc_fseg(sizeof(*drive_g));
- u8 *buf = malloc_low(CDROM_SECTOR_SIZE);
- if (!drive_g || !buf) {
+ if (!drive_g) {
warn_noalloc();
free(drive_g);
- free(buf);
return;
}
cdemu_drive_gf = drive_g;
- cdemu_buf_fl = buf;
memset(drive_g, 0, sizeof(*drive_g));
drive_g->type = DTYPE_CDEMU;
drive_g->blksize = DISK_SECTOR_SIZE;