summaryrefslogtreecommitdiff
path: root/sysutils/xentools3-hvm/patches/patch-ar
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xentools3-hvm/patches/patch-ar')
-rw-r--r--sysutils/xentools3-hvm/patches/patch-ar165
1 files changed, 165 insertions, 0 deletions
diff --git a/sysutils/xentools3-hvm/patches/patch-ar b/sysutils/xentools3-hvm/patches/patch-ar
new file mode 100644
index 00000000000..db2c5df827a
--- /dev/null
+++ b/sysutils/xentools3-hvm/patches/patch-ar
@@ -0,0 +1,165 @@
+$NetBSD: patch-ar,v 1.1.1.1 2007/06/14 19:42:12 bouyer Exp $
+
+--- ioemu/vl.c.orig 2007-05-18 16:45:21.000000000 +0200
++++ ioemu/vl.c 2007-06-12 23:59:27.000000000 +0200
+@@ -37,14 +37,17 @@
+ #include <sys/poll.h>
+ #include <sys/mman.h>
+ #include <sys/ioctl.h>
++#include <sys/resource.h>
+ #include <sys/socket.h>
+ #include <netinet/in.h>
++#include <net/if.h>
++#include <net/if_tap.h>
+ #include <arpa/inet.h>
+ #include <dirent.h>
+ #include <netdb.h>
+ #ifdef _BSD
+ #include <sys/stat.h>
+-#ifndef __APPLE__
++#ifndef _BSD
+ #include <libutil.h>
+ #endif
+ #else
+@@ -89,8 +92,8 @@
+ #include "exec-all.h"
+
+ #include <xen/hvm/params.h>
+-#define DEFAULT_NETWORK_SCRIPT "/etc/xen/qemu-ifup"
+-#define DEFAULT_BRIDGE "xenbr0"
++#define DEFAULT_NETWORK_SCRIPT "@XENDCONFDIR@/scripts/qemu-ifup"
++#define DEFAULT_BRIDGE "bridge0"
+
+ //#define DEBUG_UNUSED_IOPORT
+ //#define DEBUG_IOPORT
+@@ -1663,7 +1666,7 @@
+ return 0;
+ }
+
+-#if defined(__linux__)
++#if defined(__linux__) || defined(__NetBSD__)
+ CharDriverState *qemu_chr_open_pty(void)
+ {
+ struct termios tty;
+@@ -1814,7 +1817,7 @@
+ chr->chr_ioctl = tty_serial_ioctl;
+ return chr;
+ }
+-
++#if defined(__linux__)
+ static int pp_ioctl(CharDriverState *chr, int cmd, void *arg)
+ {
+ int fd = (int)chr->opaque;
+@@ -1877,13 +1880,14 @@
+ chr->chr_ioctl = pp_ioctl;
+ return chr;
+ }
++#endif /* __linux__ */
+
+ #else
+ CharDriverState *qemu_chr_open_pty(void)
+ {
+ return NULL;
+ }
+-#endif
++#endif /* __linux__ || __NetBSD__ */
+
+ #endif /* !defined(_WIN32) */
+
+@@ -3126,7 +3130,7 @@
+ fclose(f);
+ atexit(smb_exit);
+
+- snprintf(smb_cmdline, sizeof(smb_cmdline), "/usr/sbin/smbd -s %s",
++ snprintf(smb_cmdline, sizeof(smb_cmdline), "@PREFIX@/sbin/smbd -s %s",
+ smb_conf);
+
+ slirp_add_exec(0, smb_cmdline, 4, 139);
+@@ -3190,16 +3194,26 @@
+ int fd;
+ char *dev;
+ struct stat s;
++ struct ifreq ifr;
+
+ fd = open("/dev/tap", O_RDWR);
+ if (fd < 0) {
+- fprintf(stderr, "warning: could not open /dev/tap: no virtual network emulation\n");
++ fprintf(stderr, "warning: could not open /dev/tap: no virtual network emulation: %s\n", strerror(errno));
+ return -1;
+ }
+
++#ifdef TAPGIFNAME
++ if (ioctl (fd, TAPGIFNAME, (void*)&ifr) < 0) {
++ fprintf(stderr, "warning: could not open get tap name: %s\n",
++ strerror(errno));
++ return -1;
++ }
++ pstrcpy(ifname, ifname_size, ifr.ifr_name);
++#else
+ fstat(fd, &s);
+ dev = devname(s.st_rdev, S_IFCHR);
+ pstrcpy(ifname, ifname_size, dev);
++#endif
+
+ fcntl(fd, F_SETFL, O_NONBLOCK);
+ return fd;
+@@ -5934,7 +5948,6 @@
+ nr_buckets = (((MAX_MCACHE_SIZE >> PAGE_SHIFT) +
+ (1UL << (MCACHE_BUCKET_SHIFT - PAGE_SHIFT)) - 1) >>
+ (MCACHE_BUCKET_SHIFT - PAGE_SHIFT));
+- fprintf(logfile, "qemu_map_cache_init nr_buckets = %lx\n", nr_buckets);
+
+ /*
+ * Use mmap() directly: lets us allocate a big hash table with no up-front
+@@ -5943,8 +5956,9 @@
+ */
+ size = nr_buckets * sizeof(struct map_cache);
+ size = (size + PAGE_SIZE - 1) & ~(PAGE_SIZE - 1);
++ fprintf(logfile, "qemu_map_cache_init nr_buckets = %lx size %lu\n", nr_buckets, size);
+ mapcache_entry = mmap(NULL, size, PROT_READ|PROT_WRITE,
+- MAP_SHARED|MAP_ANONYMOUS, 0, 0);
++ MAP_SHARED|MAP_ANONYMOUS, -1, 0);
+ if (mapcache_entry == MAP_FAILED) {
+ errno = ENOMEM;
+ return -1;
+@@ -6081,6 +6095,7 @@
+ unsigned long ioreq_pfn;
+ extern void *shared_page;
+ extern void *buffered_io_page;
++ struct rlimit rl;
+ #ifdef __ia64__
+ unsigned long nr_pages;
+ xen_pfn_t *page_array;
+@@ -6089,6 +6104,32 @@
+
+ char qemu_dm_logfilename[64];
+
++ /* XXX required for now */
++ if (setenv("PTHREAD_DIAGASSERT", "A", 1) != 0)
++ perror("setenv");
++ if (getrlimit(RLIMIT_STACK, &rl) != 0) {
++ perror("getrlimit(RLIMIT_STACK)");
++ exit(1);
++ }
++ rl.rlim_cur = rl.rlim_max;
++ if (setrlimit(RLIMIT_STACK, &rl) != 0)
++ perror("setrlimit(RLIMIT_STACK)");
++ if (getrlimit(RLIMIT_DATA, &rl) != 0) {
++ perror("getrlimit(RLIMIT_DATA)");
++ exit(1);
++ }
++ rl.rlim_cur = rl.rlim_max;
++ if (setrlimit(RLIMIT_DATA, &rl) != 0)
++ perror("setrlimit(RLIMIT_DATA)");
++ rl.rlim_cur = RLIM_INFINITY;
++ rl.rlim_max = RLIM_INFINITY;
++ if (setrlimit(RLIMIT_RSS, &rl) != 0)
++ perror("setrlimit(RLIMIT_RSS)");
++ rl.rlim_cur = RLIM_INFINITY;
++ rl.rlim_max = RLIM_INFINITY;
++ if (setrlimit(RLIMIT_MEMLOCK, &rl) != 0)
++ perror("setrlimit(RLIMIT_MEMLOCK)");
++
+ LIST_INIT (&vm_change_state_head);
+ #ifndef _WIN32
+ {