1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
|
From: Michael Tokarev <mjt@tls.msk.ru>
Date: Sat, 24 Aug 2024 08:00:35 +0300
Updated: Mon, 02 Dec 2024 17:14:04 +0300
Subject: Add OS detection and support for GNU/Hurd
Forwarded: not-needed
Adds minimal (just OS detection) "support" for
GNU/Hurd. Just a test for now.
diff --git a/configure b/configure
index 0aea9b113b..0648634636 100755
--- a/configure
+++ b/configure
@@ -353,2 +353,4 @@ elif check_define __NetBSD__; then
host_os=netbsd
+elif check_define __GNU__; then
+ host_os=hurd
elif check_define __APPLE__; then
diff --git a/meson.build b/meson.build
index 91a0aa64c6..12246a588d 100644
--- a/meson.build
+++ b/meson.build
@@ -46,3 +46,3 @@ qapi_trace_events = []
bsd_oses = ['gnu/kfreebsd', 'freebsd', 'netbsd', 'openbsd', 'dragonfly', 'darwin']
-supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux']
+supported_oses = ['windows', 'freebsd', 'netbsd', 'openbsd', 'darwin', 'sunos', 'linux', 'hurd']
supported_cpus = ['ppc', 'ppc64', 's390x', 'riscv32', 'riscv64', 'x86', 'x86_64',
diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index c7053cdc2b..560ed59ac0 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -135,4 +135,11 @@ QEMU_EXTERN_C int daemon(int, int);
+#if defined(__GNU__) && !defined(PATH_MAX) /* GNU Hurd */
+# define PATH_MAX 4096
+#endif
+
#ifdef CONFIG_IOVEC
#include <sys/uio.h>
+# if defined(__GNU__) && !defined(IOV_MAX) /* GNU Hurd */
+# define IOV_MAX 1024
+# endif
#endif
diff --git a/block/file-posix.c b/block/file-posix.c
index ff928b5e85..bf165a5a71 100644
--- a/block/file-posix.c
+++ b/block/file-posix.c
@@ -85,4 +85,7 @@
#endif
#endif
+#ifdef __GNU__
+#include <sys/ioctl.h>
+#endif
#if defined(CONFIG_FALLOCATE_PUNCH_HOLE) || defined(CONFIG_FALLOCATE_ZERO_RANGE)
#include <linux/falloc.h>
@@ -2004,4 +2007,5 @@ static int handle_aiocb_write_zeroes_unmap(void *opaque)
#ifndef HAVE_COPY_FILE_RANGE
+#define copy_file_range qemu_copy_file_range
static off_t copy_file_range(int in_fd, off_t *in_off, int out_fd,
off_t *out_off, size_t len, unsigned int flags)
|