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 2 of 3] [QEMU remote] Fixes to source files to compil

To: xen-devel@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-devel] [PATCH 2 of 3] [QEMU remote] Fixes to source files to compile as a stubdomain
From: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>
Date: Thu, 11 Sep 2008 16:27:29 +0100
Delivery-date: Thu, 11 Sep 2008 08:27:06 -0700
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-devel-request@lists.xensource.com?subject=help>
List-id: Xen developer discussion <xen-devel.lists.xensource.com>
List-post: <mailto:xen-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-devel>, <mailto:xen-devel-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Thunderbird 2.0.0.14 (X11/20080505)
Various fixes to some source files to compile as a stubdomain.

Signed-off-by: Stefano Stabellini <stefano.stabellini@xxxxxxxxxxxxx>

---
 block-vbd.c       |    3 ++-
 exec-all.h        |    6 +++++-
 hw/scsi-disk.c    |    2 +-
 hw/vga.c          |    3 +++
 i386-dm/exec-dm.c |    4 ++--
 vl.c              |   32 ++++++++++++++++++++++++--------
 xen-vl-extra.c    |   17 +++++++++++++++++
 xenfbfront.c      |    6 ++++--
 xenstore.c        |    3 +--
 9 files changed, 59 insertions(+), 17 deletions(-)

diff --git a/block-vbd.c b/block-vbd.c
index 10f7a21..9c74952 100644
--- a/block-vbd.c
+++ b/block-vbd.c
@@ -22,7 +22,8 @@
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * THE SOFTWARE.
  */
-#include "vl.h"
+#include "qemu-common.h"
+#include "audio/sys-queue.h"
 #include "block_int.h"
 #include <assert.h>
 #include <xenbus.h>
diff --git a/exec-all.h b/exec-all.h
index 8d4e6f6..f9475df 100644
--- a/exec-all.h
+++ b/exec-all.h
@@ -307,7 +307,9 @@ extern void *io_mem_opaque[IO_MEM_NB_ENTRIES];
 
 #include <spinlock.h>
 
-#elif defined(__hppa__)
+#else
+
+#if defined(__hppa__)
 
 typedef int spinlock_t[4];
 
@@ -519,6 +521,8 @@ static inline int spin_trylock(spinlock_t *lock)
 }
 #endif
 
+#endif
+
 extern spinlock_t tb_lock;
 
 extern int tb_invalidated_flag;
diff --git a/hw/scsi-disk.c b/hw/scsi-disk.c
index 3f78166..e3d8069 100644
--- a/hw/scsi-disk.c
+++ b/hw/scsi-disk.c
@@ -36,7 +36,7 @@ do { fprintf(stderr, "scsi-disk: " fmt , ##args); } while (0)
 
 #ifdef CONFIG_STUBDOM
 #include <xen/io/blkif.h>
-#define SCSI_DMA_BUF_SIZE    (BLKIF_MAX_SEGMENTS_PER_REQUEST * 
TARGET_PAGE_SIZE)
+#define SCSI_DMA_BUF_SIZE    ((BLKIF_MAX_SEGMENTS_PER_REQUEST - 1) * PAGE_SIZE)
 #else
 #define SCSI_DMA_BUF_SIZE    131072
 #endif
diff --git a/hw/vga.c b/hw/vga.c
index 9e0dea8..65c710a 100644
--- a/hw/vga.c
+++ b/hw/vga.c
@@ -27,6 +27,9 @@
 #include "pci.h"
 #include "vga_int.h"
 #include <sys/mman.h>
+#include "sysemu.h"
+#include "qemu-xen.h"
+#include "exec-all.h"
 
 //#define DEBUG_VGA
 //#define DEBUG_VGA_MEM
diff --git a/i386-dm/exec-dm.c b/i386-dm/exec-dm.c
index d511021..dec4aa8 100644
--- a/i386-dm/exec-dm.c
+++ b/i386-dm/exec-dm.c
@@ -574,8 +574,8 @@ void cpu_physical_memory_rw(target_phys_addr_t _addr, 
uint8_t *buf,
 #ifdef CONFIG_STUBDOM
     if (logdirty_bitmap != NULL)
         xc_hvm_modified_memory(xc_handle, domid, _addr >> TARGET_PAGE_BITS,
-                (_addr + _len + TARGET_PAGE_SIZE - 1) >> TARGET_PAGE_BITS
-                    - _addr >> TARGET_PAGE_BITS);
+                ((_addr + _len + TARGET_PAGE_SIZE - 1) >> TARGET_PAGE_BITS)
+                    - (_addr >> TARGET_PAGE_BITS));
 #endif
 
     mapcache_unlock();
diff --git a/vl.c b/vl.c
index 3f14553..e215af7 100644
--- a/vl.c
+++ b/vl.c
@@ -38,6 +38,7 @@
 #include "qemu-char.h"
 #include "block.h"
 #include "audio/audio.h"
+#include "qemu-xen.h"
 
 #include <unistd.h>
 #include <stdlib.h>
@@ -114,6 +115,7 @@ int inet_aton(const char *cp, struct in_addr *ia);
 #include <mmsystem.h>
 #define getopt_long_only getopt_long
 #define memalign(align, size) malloc(size)
+#define NO_UNIX_SOCKETS 1
 #endif
 
 #include "qemu_socket.h"
@@ -3104,7 +3106,7 @@ static void udp_chr_update_read_handler(CharDriverState 
*chr)
 }
 
 int parse_host_port(struct sockaddr_in *saddr, const char *str);
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
 static int parse_unix_path(struct sockaddr_un *uaddr, const char *str);
 #endif
 int parse_host_src_port(struct sockaddr_in *haddr,
@@ -3312,7 +3314,7 @@ static void tcp_chr_accept(void *opaque)
     CharDriverState *chr = opaque;
     TCPCharDriver *s = chr->opaque;
     struct sockaddr_in saddr;
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
     struct sockaddr_un uaddr;
 #endif
     struct sockaddr *addr;
@@ -3320,7 +3322,7 @@ static void tcp_chr_accept(void *opaque)
     int fd;
 
     for(;;) {
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
        if (s->is_unix) {
            len = sizeof(uaddr);
            addr = (struct sockaddr *)&uaddr;
@@ -3369,13 +3371,13 @@ static CharDriverState *qemu_chr_open_tcp(const char 
*host_str,
     int do_nodelay = 0;
     const char *ptr;
     struct sockaddr_in saddr;
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
     struct sockaddr_un uaddr;
 #endif
     struct sockaddr *addr;
     socklen_t addrlen;
 
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
     if (is_unix) {
        addr = (struct sockaddr *)&uaddr;
        addrlen = sizeof(uaddr);
@@ -3414,7 +3416,7 @@ static CharDriverState *qemu_chr_open_tcp(const char 
*host_str,
     if (!s)
         goto fail;
 
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
     if (is_unix)
        fd = socket(PF_UNIX, SOCK_STREAM, 0);
     else
@@ -3439,7 +3441,7 @@ static CharDriverState *qemu_chr_open_tcp(const char 
*host_str,
 
     if (is_listen) {
         /* allow fast reuse */
-#ifndef _WIN32
+#ifndef NO_UNIX_SOCKETS
        if (is_unix) {
            char path[109];
            strncpy(path, uaddr.sun_path, 108);
@@ -4270,7 +4272,7 @@ static int tap_open(char *ifname, int ifname_size)
     fcntl(fd, F_SETFL, O_NONBLOCK);
     return fd;
 }
-#else
+#elif defined(__linux__)
 static int tap_open(char *ifname, int ifname_size)
 {
     struct ifreq ifr;
@@ -8699,7 +8701,17 @@ int main(int argc, char **argv)
     bdrv_init();
 
     xc_handle = xc_interface_open();
+#ifdef CONFIG_STUBDOM
+    {
+        char *domid_s, *msg;
+        if ((msg = xenbus_read(XBT_NIL, "domid", &domid_s)))
+            fprintf(stderr,"Can not read our own domid: %s\n", msg);
+        else
+            xenstore_parse_domain_config(atoi(domid_s));
+    }
+#else
     xenstore_parse_domain_config(domid);
+#endif /* CONFIG_STUBDOM */
 
     /* we always create the cdrom drive, even if no disk is there */
 
@@ -8729,6 +8741,10 @@ int main(int argc, char **argv)
 
     /* terminal init */
     memset(&display_state, 0, sizeof(display_state));
+#ifdef CONFIG_STUBDOM
+    if (xenfb_pv_display_init(ds) == 0) {
+    } else
+#endif
     if (nographic) {
         if (curses) {
             fprintf(stderr, "fatal: -nographic can't be used with -curses\n");
diff --git a/xen-vl-extra.c b/xen-vl-extra.c
index 4baada2..8c3dc6b 100644
--- a/xen-vl-extra.c
+++ b/xen-vl-extra.c
@@ -88,3 +88,20 @@ void do_loadvm(const char *name)
 struct qemu_alarm_timer;
 static int unix_start_timer(struct qemu_alarm_timer *t) { return 0; }
 static void unix_stop_timer(struct qemu_alarm_timer *t) { }
+
+#ifdef CONFIG_STUBDOM
+#include <netfront.h>
+static int tap_open(char *ifname, int ifname_size)
+{
+    char nodename[64];
+    static int num = 1; // 0 is for our own TCP/IP networking
+    snprintf(nodename, sizeof(nodename), "device/vif/%d", num++);
+    return netfront_tap_open(nodename);
+}
+
+#undef DEFAULT_NETWORK_SCRIPT
+#define DEFAULT_NETWORK_SCRIPT ""
+#undef DEFAULT_NETWORK_DOWN_SCRIPT
+#define DEFAULT_NETWORK_DOWN_SCRIPT ""
+#endif
+
diff --git a/xenfbfront.c b/xenfbfront.c
index 16691fd..3a67ada 100644
--- a/xenfbfront.c
+++ b/xenfbfront.c
@@ -4,11 +4,12 @@
 #include <semaphore.h>
 #include <sched.h>
 #include <fbfront.h>
+#include <hw/hw.h>
+#include <hw/pc.h>
+#include <console.h>
 
 #include <hw/xenfb.h>
 
-#include "vl.h"
-
 typedef struct XenFBState {
     struct semaphore kbd_sem;
     struct kbdfront_dev *kbd_dev;
@@ -70,6 +71,7 @@ static void xenfb_pv_resize_shared(DisplayState *ds, int w, 
int h, int depth, in
     if (ds->shared_buf) {
         offset = pixels - xs->vga_vram;
         ds->data = pixels;
+        fbfront_resize(fb_dev, ds->width, ds->height, ds->linesize, ds->depth, 
offset);
     } else {
         ds->data = xs->nonshared_vram;
         fbfront_resize(fb_dev, w, h, linesize, ds->depth, VGA_RAM_SIZE);
diff --git a/xenstore.c b/xenstore.c
index c0fe95a..99792c4 100644
--- a/xenstore.c
+++ b/xenstore.c
@@ -305,8 +305,7 @@ void xenstore_parse_domain_config(int hvm_domid)
             continue;
        if (bdrv_open2(bs, buf, 0 /* snapshot */, &bdrv_vbd) == 0) {
            pstrcpy(bs->filename, sizeof(bs->filename), params);
-           continue;
-       }
+       } else
 #endif
 
         if (params[0]) {
-- 
1.5.4.3


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

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-devel] [PATCH 2 of 3] [QEMU remote] Fixes to source files to compile as a stubdomain, Stefano Stabellini <=