mirror of
https://github.com/yann64/haikuports.git
synced 2026-05-02 13:08:53 +02:00
239 lines
6.5 KiB
Plaintext
239 lines
6.5 KiB
Plaintext
From 0548c8431c112193a6fcb7dbac2544705235134d Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Zolt=C3=A1n=20Mizsei?= <zmizsei@extrowerk.com>
|
|
Date: Sun, 20 Nov 2016 14:04:51 +0100
|
|
Subject: Haiku patches
|
|
|
|
|
|
diff --git a/os-posix.c b/os-posix.c
|
|
index 92e9d85..8047238 100644
|
|
--- a/os-posix.c
|
|
+++ b/os-posix.c
|
|
@@ -42,6 +42,15 @@
|
|
#include <sys/prctl.h>
|
|
#endif
|
|
|
|
+#ifdef __HAIKU__
|
|
+#ifndef MCL_CURRENT
|
|
+#define MCL_CURRENT 8192
|
|
+#endif
|
|
+#ifndef MCL_FUTURE
|
|
+#define MCL_FUTURE 16384
|
|
+#endif
|
|
+#endif
|
|
+
|
|
static struct passwd *user_pwd;
|
|
static const char *chroot_dir;
|
|
static int daemonize;
|
|
@@ -328,11 +337,12 @@ bool is_daemonized(void)
|
|
int os_mlock(void)
|
|
{
|
|
int ret = 0;
|
|
-
|
|
+#ifndef __HAIKU__
|
|
ret = mlockall(MCL_CURRENT | MCL_FUTURE);
|
|
if (ret < 0) {
|
|
perror("mlockall");
|
|
}
|
|
+#endif
|
|
|
|
return ret;
|
|
}
|
|
diff --git a/target/mips/mips-semi.c b/target/mips/mips-semi.c
|
|
index a7aefba..16c2336 100644
|
|
--- a/target/mips/mips-semi.c
|
|
+++ b/target/mips/mips-semi.c
|
|
@@ -75,6 +75,7 @@ enum UHIOpenFlags {
|
|
|
|
/* Errno values taken from asm-mips/errno.h */
|
|
static uint16_t host_to_mips_errno[] = {
|
|
+#ifndef __HAIKU__
|
|
[ENAMETOOLONG] = 78,
|
|
#ifdef EOVERFLOW
|
|
[EOVERFLOW] = 79,
|
|
@@ -82,6 +83,9 @@ static uint16_t host_to_mips_errno[] = {
|
|
#ifdef ELOOP
|
|
[ELOOP] = 90,
|
|
#endif
|
|
+#else
|
|
+NULL
|
|
+#endif
|
|
};
|
|
|
|
static int errno_mips(int err)
|
|
diff --git a/target/xtensa/xtensa-semi.c b/target/xtensa/xtensa-semi.c
|
|
index 7aa1d13..de7b7f5 100644
|
|
--- a/target/xtensa/xtensa-semi.c
|
|
+++ b/target/xtensa/xtensa-semi.c
|
|
@@ -98,59 +98,53 @@ enum {
|
|
|
|
static uint32_t errno_h2g(int host_errno)
|
|
{
|
|
- static const uint32_t guest_errno[] = {
|
|
- [EPERM] = TARGET_EPERM,
|
|
- [ENOENT] = TARGET_ENOENT,
|
|
- [ESRCH] = TARGET_ESRCH,
|
|
- [EINTR] = TARGET_EINTR,
|
|
- [EIO] = TARGET_EIO,
|
|
- [ENXIO] = TARGET_ENXIO,
|
|
- [E2BIG] = TARGET_E2BIG,
|
|
- [ENOEXEC] = TARGET_ENOEXEC,
|
|
- [EBADF] = TARGET_EBADF,
|
|
- [ECHILD] = TARGET_ECHILD,
|
|
- [EAGAIN] = TARGET_EAGAIN,
|
|
- [ENOMEM] = TARGET_ENOMEM,
|
|
- [EACCES] = TARGET_EACCES,
|
|
- [EFAULT] = TARGET_EFAULT,
|
|
+ switch (host_errno) {
|
|
+ case 0: return 0;
|
|
+ case EPERM: return TARGET_EPERM;
|
|
+ case ENOENT: return TARGET_ENOENT;
|
|
+ case ESRCH: return TARGET_ESRCH;
|
|
+ case EINTR: return TARGET_EINTR;
|
|
+ case EIO: return TARGET_EIO;
|
|
+ case ENXIO: return TARGET_ENXIO;
|
|
+ case E2BIG: return TARGET_E2BIG;
|
|
+ case ENOEXEC: return TARGET_ENOEXEC;
|
|
+ case EBADF: return TARGET_EBADF;
|
|
+ case ECHILD: return TARGET_ECHILD;
|
|
+ case EAGAIN: return TARGET_EAGAIN;
|
|
+ case ENOMEM: return TARGET_ENOMEM;
|
|
+ case EACCES: return TARGET_EACCES;
|
|
+ case EFAULT: return TARGET_EFAULT;
|
|
#ifdef ENOTBLK
|
|
- [ENOTBLK] = TARGET_ENOTBLK,
|
|
+ case ENOTBLK: return TARGET_ENOTBLK;
|
|
#endif
|
|
- [EBUSY] = TARGET_EBUSY,
|
|
- [EEXIST] = TARGET_EEXIST,
|
|
- [EXDEV] = TARGET_EXDEV,
|
|
- [ENODEV] = TARGET_ENODEV,
|
|
- [ENOTDIR] = TARGET_ENOTDIR,
|
|
- [EISDIR] = TARGET_EISDIR,
|
|
- [EINVAL] = TARGET_EINVAL,
|
|
- [ENFILE] = TARGET_ENFILE,
|
|
- [EMFILE] = TARGET_EMFILE,
|
|
- [ENOTTY] = TARGET_ENOTTY,
|
|
+ case EBUSY: return TARGET_EBUSY;
|
|
+ case EEXIST: return TARGET_EEXIST;
|
|
+ case EXDEV: return TARGET_EXDEV;
|
|
+ case ENODEV: return TARGET_ENODEV;
|
|
+ case ENOTDIR: return TARGET_ENOTDIR;
|
|
+ case EISDIR: return TARGET_EISDIR;
|
|
+ case EINVAL: return TARGET_EINVAL;
|
|
+ case ENFILE: return TARGET_ENFILE;
|
|
+ case EMFILE: return TARGET_EMFILE;
|
|
+ case ENOTTY: return TARGET_ENOTTY;
|
|
#ifdef ETXTBSY
|
|
- [ETXTBSY] = TARGET_ETXTBSY,
|
|
+ case ETXTBSY: return TARGET_ETXTBSY;
|
|
#endif
|
|
- [EFBIG] = TARGET_EFBIG,
|
|
- [ENOSPC] = TARGET_ENOSPC,
|
|
- [ESPIPE] = TARGET_ESPIPE,
|
|
- [EROFS] = TARGET_EROFS,
|
|
- [EMLINK] = TARGET_EMLINK,
|
|
- [EPIPE] = TARGET_EPIPE,
|
|
- [EDOM] = TARGET_EDOM,
|
|
- [ERANGE] = TARGET_ERANGE,
|
|
- [ENOSYS] = TARGET_ENOSYS,
|
|
+ case EFBIG: return TARGET_EFBIG;
|
|
+ case ENOSPC: return TARGET_ENOSPC;
|
|
+ case ESPIPE: return TARGET_ESPIPE;
|
|
+ case EROFS: return TARGET_EROFS;
|
|
+ case EMLINK: return TARGET_EMLINK;
|
|
+ case EPIPE: return TARGET_EPIPE;
|
|
+ case EDOM: return TARGET_EDOM;
|
|
+ case ERANGE: return TARGET_ERANGE;
|
|
+ case ENOSYS: return TARGET_ENOSYS;
|
|
#ifdef ELOOP
|
|
- [ELOOP] = TARGET_ELOOP,
|
|
+ case ELOOP: return TARGET_ELOOP;
|
|
#endif
|
|
};
|
|
|
|
- if (host_errno == 0) {
|
|
- return 0;
|
|
- } else if (host_errno > 0 && host_errno < ARRAY_SIZE(guest_errno) &&
|
|
- guest_errno[host_errno]) {
|
|
- return guest_errno[host_errno];
|
|
- } else {
|
|
- return TARGET_EINVAL;
|
|
- }
|
|
+ return TARGET_EINVAL;
|
|
}
|
|
|
|
void xtensa_sim_open_console(Chardev *chr)
|
|
diff --git a/tests/Makefile.include b/tests/Makefile.include
|
|
index 37c1bed..5879713 100644
|
|
--- a/tests/Makefile.include
|
|
+++ b/tests/Makefile.include
|
|
@@ -806,7 +806,7 @@ tests/migration/initrd-stress.img: tests/migration/stress$(EXESUF)
|
|
rmdir $(INITRD_WORK_DIR)
|
|
|
|
ifeq ($(CONFIG_POSIX),y)
|
|
-LIBS += -lutil
|
|
+LIBS +=
|
|
endif
|
|
|
|
# QTest rules
|
|
diff --git a/util/compatfd.c b/util/compatfd.c
|
|
index 980bd33..31e01d6 100644
|
|
--- a/util/compatfd.c
|
|
+++ b/util/compatfd.c
|
|
@@ -17,7 +17,9 @@
|
|
#include "qemu-common.h"
|
|
#include "qemu/thread.h"
|
|
|
|
+#ifndef __HAIKU__
|
|
#include <sys/syscall.h>
|
|
+#endif
|
|
|
|
struct sigfd_compat_info
|
|
{
|
|
diff --git a/util/main-loop.c b/util/main-loop.c
|
|
index 2f48f41..e0350f6 100644
|
|
--- a/util/main-loop.c
|
|
+++ b/util/main-loop.c
|
|
@@ -81,7 +81,9 @@ static int qemu_signal_init(void)
|
|
*/
|
|
sigemptyset(&set);
|
|
sigaddset(&set, SIG_IPI);
|
|
+#ifdef SIGIO
|
|
sigaddset(&set, SIGIO);
|
|
+#endif
|
|
sigaddset(&set, SIGALRM);
|
|
sigaddset(&set, SIGBUS);
|
|
/* SIGINT cannot be handled via signalfd, so that ^C can be used
|
|
diff --git a/util/oslib-posix.c b/util/oslib-posix.c
|
|
index cacf0ef..813f7f9 100644
|
|
--- a/util/oslib-posix.c
|
|
+++ b/util/oslib-posix.c
|
|
@@ -36,7 +36,9 @@
|
|
#include "qapi/error.h"
|
|
#include "qemu/sockets.h"
|
|
#include <libgen.h>
|
|
+#ifndef __HAIKU__
|
|
#include <sys/signal.h>
|
|
+#endif
|
|
#include "qemu/cutils.h"
|
|
|
|
#ifdef CONFIG_LINUX
|
|
diff --git a/util/qemu-openpty.c b/util/qemu-openpty.c
|
|
index 2e8b43b..adcc732 100644
|
|
--- a/util/qemu-openpty.c
|
|
+++ b/util/qemu-openpty.c
|
|
@@ -35,7 +35,9 @@
|
|
#include "qemu/osdep.h"
|
|
#include "qemu-common.h"
|
|
|
|
-#if defined(__GLIBC__)
|
|
+#if defined(__HAIKU__)
|
|
+# include <termios.h>
|
|
+#elif defined(__GLIBC__)
|
|
# include <pty.h>
|
|
#elif defined CONFIG_BSD
|
|
# include <termios.h>
|
|
--
|
|
2.13.1
|
|
|