⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vnc-display-find-unused

📁 xen 3.2.2 源码
💻
字号:
Index: ioemu/vnc.c===================================================================--- ioemu.orig/vnc.c	2007-05-10 15:11:41.000000000 +0100+++ ioemu/vnc.c	2007-05-10 15:11:41.000000000 +0100@@ -1266,7 +1266,7 @@  extern int parse_host_port(struct sockaddr_in *saddr, const char *str); -void vnc_display_init(DisplayState *ds, const char *arg)+int vnc_display_init(DisplayState *ds, const char *arg, int find_unused) {     struct sockaddr *addr;     struct sockaddr_in iaddr;@@ -1308,6 +1308,9 @@      vnc_dpy_resize(vs->ds, 640, 400); +    if (arg == NULL)+	arg = "localhost:0";+     #ifndef _WIN32     if (strstart(arg, "unix:", &p)) { 	addr = (struct sockaddr *)&uaddr;@@ -1352,7 +1355,11 @@ 	}     } -    if (bind(vs->lsock, addr, addrlen) == -1) {+    while (bind(vs->lsock, addr, addrlen) == -1) {+	if (find_unused && errno == EADDRINUSE) {+	    iaddr.sin_port = htons(ntohs(iaddr.sin_port) + 1);+	    continue;+	} 	fprintf(stderr, "bind() failed\n"); 	exit(1);     }@@ -1366,6 +1373,8 @@     if (ret == -1) { 	exit(1);     }++    return ntohs(iaddr.sin_port); }  int vnc_start_viewer(int port)Index: ioemu/vl.c===================================================================--- ioemu.orig/vl.c	2007-05-10 15:11:41.000000000 +0100+++ ioemu/vl.c	2007-05-10 15:11:41.000000000 +0100@@ -132,6 +132,7 @@ static DisplayState display_state; int nographic; int vncviewer;+int vncunused; const char* keyboard_layout = NULL; int64_t ticks_per_sec; int boot_device = 'c';@@ -6311,6 +6312,7 @@            "-loadvm file    start right away with a saved state (loadvm in monitor)\n" 	   "-vnc display    start a VNC server on display\n"            "-vncviewer      start a vncviewer process for this domain\n"+           "-vncunused      bind the VNC server to an unused port\n" #ifndef _WIN32 	   "-daemonize      daemonize QEMU after initializing\n" #endif@@ -6407,6 +6409,7 @@     QEMU_OPTION_vcpus,     QEMU_OPTION_acpi,     QEMU_OPTION_vncviewer,+    QEMU_OPTION_vncunused, };  typedef struct QEMUOption {@@ -6486,6 +6489,7 @@     { "smp", HAS_ARG, QEMU_OPTION_smp },     { "vnc", HAS_ARG, QEMU_OPTION_vnc },     { "vncviewer", 0, QEMU_OPTION_vncviewer },+    { "vncunused", 0, QEMU_OPTION_vncunused },      /* temporary options */     { "usb", 0, QEMU_OPTION_usb },@@ -6853,6 +6857,7 @@     snapshot = 0;     nographic = 0;     vncviewer = 0;+    vncunused = 0;     kernel_filename = NULL;     kernel_cmdline = ""; #ifdef TARGET_PPC@@ -7272,12 +7277,15 @@             case QEMU_OPTION_vncviewer:                 vncviewer++;                 break;+            case QEMU_OPTION_vncunused:+                vncunused++;+                break;             }         }     }  #ifndef _WIN32-    if (daemonize && !nographic && vnc_display == NULL) {+    if (daemonize && !nographic && vnc_display == NULL && vncunused == 0) { 	fprintf(stderr, "Can only daemonize if using -nographic or -vnc\n"); 	daemonize = 0;     }@@ -7553,10 +7561,11 @@     /* terminal init */     if (nographic) {         dumb_display_init(ds);-    } else if (vnc_display != NULL) {-	vnc_display_init(ds, vnc_display);+    } else if (vnc_display != NULL || vncunused != 0) {+	int vnc_display_port;+	vnc_display_port = vnc_display_init(ds, vnc_display, vncunused); 	if (vncviewer)-	    vnc_start_viewer(vnc_display);+	    vnc_start_viewer(vnc_display_port);     } else { #if defined(CONFIG_SDL)         sdl_display_init(ds, full_screen);@@ -7626,7 +7635,7 @@         }     } -    if (vnc_display == -1) {+    if (vnc_display == NULL && vncunused == 0) {         gui_timer = qemu_new_timer(rt_clock, gui_update, NULL);         qemu_mod_timer(gui_timer, qemu_get_clock(rt_clock));     }Index: ioemu/vl.h===================================================================--- ioemu.orig/vl.h	2007-05-10 15:11:41.000000000 +0100+++ ioemu/vl.h	2007-05-10 15:11:41.000000000 +0100@@ -928,7 +928,7 @@ void cocoa_display_init(DisplayState *ds, int full_screen);  /* vnc.c */-void vnc_display_init(DisplayState *ds, const char *display);+int vnc_display_init(DisplayState *ds, const char *display, int find_unused); void do_info_vnc(void); int vnc_start_viewer(int port); 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -