From: Samuel Thibault <samuel.thibault@eu.citrix.com>
To: John Levon <levon@movementarian.org>
Cc: Christoph Egger <Christoph.Egger@amd.com>, xen-devel@lists.xensource.com
Subject: [PATCH] c/s 17028: build issue
Date: Wed, 13 Feb 2008 17:15:14 +0000 [thread overview]
Message-ID: <20080213171514.GF10579@implementation.uk.xensource.com> (raw)
In-Reply-To: <20080213162648.GE13022@totally.trollied.org.uk>
Ok, then this should fix it, backported from upstream.
ioemu: backport upstream's qemu_memalign.
Signed-off-by: Samuel Thibault <samuel.thibault@eu.citrix.com>
diff -r 889b6b7d306f tools/ioemu/block-vbd.c
--- a/tools/ioemu/block-vbd.c Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/block-vbd.c Wed Feb 13 17:12:59 2008 +0000
@@ -223,7 +223,7 @@ static int vbd_read(BlockDriverState *bs
* copying */
if (!((uintptr_t)buf & (SECTOR_SIZE-1)))
return vbd_aligned_io(bs, sector_num, buf, nb_sectors, 0);
- iobuf = memalign(PAGE_SIZE, nb_sectors * SECTOR_SIZE);
+ iobuf = qemu_memalign(PAGE_SIZE, nb_sectors * SECTOR_SIZE);
ret = vbd_aligned_io(bs, sector_num, iobuf, nb_sectors, 0);
memcpy(buf, iobuf, nb_sectors * SECTOR_SIZE);
free(iobuf);
@@ -242,7 +242,7 @@ static int vbd_write(BlockDriverState *b
int ret;
if (!((uintptr_t)buf & (SECTOR_SIZE-1)))
return vbd_aligned_io(bs, sector_num, (uint8_t*) buf, nb_sectors, 1);
- iobuf = memalign(PAGE_SIZE, nb_sectors * SECTOR_SIZE);
+ iobuf = qemu_memalign(PAGE_SIZE, nb_sectors * SECTOR_SIZE);
memcpy(iobuf, buf, nb_sectors * SECTOR_SIZE);
ret = vbd_aligned_io(bs, sector_num, iobuf, nb_sectors, 1);
free(iobuf);
diff -r 889b6b7d306f tools/ioemu/hw/fdc.c
--- a/tools/ioemu/hw/fdc.c Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/hw/fdc.c Wed Feb 13 17:12:59 2008 +0000
@@ -378,7 +378,7 @@ struct fdctrl_t {
uint8_t cur_drv;
uint8_t bootsel;
/* Command FIFO */
- uint8_t fifo[FD_SECTOR_LEN];
+ uint8_t *fifo;
uint32_t data_pos;
uint32_t data_len;
uint8_t data_state;
@@ -497,6 +497,11 @@ fdctrl_t *fdctrl_init (int irq_lvl, int
fdctrl = qemu_mallocz(sizeof(fdctrl_t));
if (!fdctrl)
return NULL;
+ fdctrl->fifo = qemu_memalign(512, FD_SECTOR_LEN);
+ if (fdctrl->fifo == NULL) {
+ qemu_free(fdctrl);
+ return NULL;
+ }
fdctrl->result_timer = qemu_new_timer(vm_clock,
fdctrl_result_timer, fdctrl);
diff -r 889b6b7d306f tools/ioemu/hw/ide.c
--- a/tools/ioemu/hw/ide.c Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/hw/ide.c Wed Feb 13 17:12:59 2008 +0000
@@ -2306,7 +2306,7 @@ static void ide_init2(IDEState *ide_stat
for(i = 0; i < 2; i++) {
s = ide_state + i;
- s->io_buffer = memalign(getpagesize(), MAX_MULT_SECTORS*512 + 4);
+ s->io_buffer = qemu_memalign(getpagesize(), MAX_MULT_SECTORS*512 + 4);
if (i == 0)
s->bs = hd0;
else
diff -r 889b6b7d306f tools/ioemu/hw/scsi-disk.c
--- a/tools/ioemu/hw/scsi-disk.c Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/hw/scsi-disk.c Wed Feb 13 17:12:59 2008 +0000
@@ -81,7 +81,7 @@ static SCSIRequest *scsi_new_request(SCS
free_requests = r->next;
} else {
r = qemu_malloc(sizeof(SCSIRequest));
- r->dma_buf = memalign(getpagesize(), SCSI_DMA_BUF_SIZE);
+ r->dma_buf = qemu_memalign(getpagesize(), SCSI_DMA_BUF_SIZE);
}
r->dev = s;
r->tag = tag;
diff -r 889b6b7d306f tools/ioemu/osdep.c
--- a/tools/ioemu/osdep.c Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/osdep.c Wed Feb 13 17:12:59 2008 +0000
@@ -61,6 +61,10 @@ void *qemu_malloc(size_t size)
}
#if defined(_WIN32)
+void *qemu_memalign(size_t alignment, size_t size)
+{
+ return VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
+}
void *qemu_vmalloc(size_t size)
{
@@ -172,6 +176,22 @@ void kqemu_vfree(void *ptr)
#endif
+void *qemu_memalign(size_t alignment, size_t size)
+{
+#if defined(_POSIX_C_SOURCE)
+ int ret;
+ void *ptr;
+ ret = posix_memalign(&ptr, alignment, size);
+ if (ret != 0)
+ return NULL;
+ return ptr;
+#elif defined(_BSD)
+ return valloc(size);
+#else
+ return memalign(alignment, size);
+#endif
+}
+
/* alloc shared memory pages */
void *qemu_vmalloc(size_t size)
{
diff -r 889b6b7d306f tools/ioemu/osdep.h
--- a/tools/ioemu/osdep.h Wed Feb 13 17:02:05 2008 +0000
+++ b/tools/ioemu/osdep.h Wed Feb 13 17:12:59 2008 +0000
@@ -14,6 +14,7 @@ void qemu_free(void *ptr);
void qemu_free(void *ptr);
char *qemu_strdup(const char *str);
+void *qemu_memalign(size_t alignment, size_t size);
void *qemu_vmalloc(size_t size);
void qemu_vfree(void *ptr);
next prev parent reply other threads:[~2008-02-13 17:15 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-13 16:06 c/s 17028: build issue Christoph Egger
2008-02-13 16:14 ` John Levon
2008-02-13 16:24 ` Samuel Thibault
2008-02-13 16:26 ` John Levon
2008-02-13 17:15 ` Samuel Thibault [this message]
2008-02-14 8:22 ` [PATCH] " Christoph Egger
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20080213171514.GF10579@implementation.uk.xensource.com \
--to=samuel.thibault@eu.citrix.com \
--cc=Christoph.Egger@amd.com \
--cc=levon@movementarian.org \
--cc=xen-devel@lists.xensource.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.