WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-devel

[Xen-devel] [PATCH] c/s 17028: build issue

Ok, then this should fix it, backported from upstream.


ioemu: backport upstream's qemu_memalign.

Signed-off-by: Samuel Thibault <samuel.thibault@xxxxxxxxxxxxx>

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);
 

_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel

<Prev in Thread] Current Thread [Next in Thread>