mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-19 19:34:18 +08:00
309 lines
8.4 KiB
Diff
309 lines
8.4 KiB
Diff
diff -ruwN source/block/file-posix.c source-new/block/file-posix.c
|
|
--- source/block/file-posix.c 2019-01-13 08:23:04.772397346 -0700
|
|
+++ source-new/block/file-posix.c 2019-01-13 10:40:35.102453914 -0700
|
|
@@ -258,6 +258,7 @@
|
|
int i;
|
|
|
|
errno = ENOTSUP;
|
|
+#if !defined(__redox__)
|
|
static const unsigned long ioctl_list[] = {
|
|
#ifdef BLKSSZGET
|
|
BLKSSZGET,
|
|
@@ -277,6 +278,7 @@
|
|
success = true;
|
|
}
|
|
}
|
|
+#endif
|
|
|
|
return success ? 0 : -errno;
|
|
}
|
|
@@ -1154,6 +1156,9 @@
|
|
|
|
static ssize_t handle_aiocb_ioctl(RawPosixAIOData *aiocb)
|
|
{
|
|
+#if defined(__redox__)
|
|
+ return -ENOTSUP
|
|
+#else
|
|
int ret;
|
|
|
|
ret = ioctl(aiocb->aio_fildes, aiocb->aio_ioctl_cmd, aiocb->aio_ioctl_buf);
|
|
@@ -1162,6 +1167,7 @@
|
|
}
|
|
|
|
return 0;
|
|
+#endif
|
|
}
|
|
|
|
static ssize_t handle_aiocb_flush(RawPosixAIOData *aiocb)
|
|
diff -ruwN source/configure source-new/configure
|
|
--- source/configure 2018-12-11 10:44:34.000000000 -0700
|
|
+++ source-new/configure 2019-01-12 15:11:33.069669757 -0700
|
|
@@ -649,6 +649,8 @@
|
|
targetos='NetBSD'
|
|
elif check_define __APPLE__; then
|
|
targetos='Darwin'
|
|
+elif check_define __redox__; then
|
|
+ targetos='Redox'
|
|
else
|
|
# This is a fatal error, but don't report it yet, because we
|
|
# might be going to just print the --help text, or it might
|
|
@@ -3500,7 +3502,7 @@
|
|
EOF
|
|
|
|
if ! compile_prog "$CFLAGS" "$LIBS" ; then
|
|
- error_exit "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
|
|
+ echo "sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T."\
|
|
"You probably need to set PKG_CONFIG_LIBDIR"\
|
|
"to point to the right pkg-config files for your"\
|
|
"build target"
|
|
diff -ruwN source/include/qom/cpu.h source-new/include/qom/cpu.h
|
|
--- source/include/qom/cpu.h 2018-12-11 10:44:34.000000000 -0700
|
|
+++ source-new/include/qom/cpu.h 2019-01-12 15:14:15.442350500 -0700
|
|
@@ -30,6 +30,10 @@
|
|
#include "qemu/queue.h"
|
|
#include "qemu/thread.h"
|
|
|
|
+#if defined(__redox__)
|
|
+#define sigjmp_buf jmp_buf
|
|
+#endif
|
|
+
|
|
typedef int (*WriteCoreDumpFunction)(const void *buf, size_t size,
|
|
void *opaque);
|
|
|
|
diff -ruwN source/io/channel-socket.c source-new/io/channel-socket.c
|
|
--- source/io/channel-socket.c 2018-12-11 10:44:34.000000000 -0700
|
|
+++ source-new/io/channel-socket.c 2019-01-13 08:54:26.951009516 -0700
|
|
@@ -407,7 +407,7 @@
|
|
}
|
|
|
|
|
|
-#ifndef WIN32
|
|
+#if !defined(WIN32) && !defined(__redox__)
|
|
static void qio_channel_socket_copy_fds(struct msghdr *msg,
|
|
int **fds, size_t *nfds)
|
|
{
|
|
@@ -554,7 +554,7 @@
|
|
}
|
|
return ret;
|
|
}
|
|
-#else /* WIN32 */
|
|
+#else /* WIN32 or __redox__ */
|
|
static ssize_t qio_channel_socket_readv(QIOChannel *ioc,
|
|
const struct iovec *iov,
|
|
size_t niov,
|
|
diff -ruwN source/util/compatfd.c source-new/util/compatfd.c
|
|
--- source/util/compatfd.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/compatfd.c 2019-01-12 16:24:40.146857753 -0700
|
|
@@ -17,7 +17,9 @@
|
|
#include "qemu-common.h"
|
|
#include "qemu/thread.h"
|
|
|
|
+#if defined(CONFIG_SIGNALFD)
|
|
#include <sys/syscall.h>
|
|
+#endif
|
|
|
|
struct sigfd_compat_info
|
|
{
|
|
diff -ruwN source/util/coroutine-sigaltstack.c source-new/util/coroutine-sigaltstack.c
|
|
--- source/util/coroutine-sigaltstack.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/coroutine-sigaltstack.c 2019-01-13 10:38:32.279965167 -0700
|
|
@@ -30,6 +30,12 @@
|
|
#include "qemu-common.h"
|
|
#include "qemu/coroutine_int.h"
|
|
|
|
+#if defined(__redox__)
|
|
+#define sigjmp_buf jmp_buf
|
|
+#define sigsetjmp(env, savesigs) setjmp(env)
|
|
+#define siglongjmp longjmp
|
|
+#endif
|
|
+
|
|
typedef struct {
|
|
Coroutine base;
|
|
void *stack;
|
|
@@ -288,4 +294,3 @@
|
|
|
|
return s && s->current->caller;
|
|
}
|
|
-
|
|
diff -ruwN source/util/iov.c source-new/util/iov.c
|
|
--- source/util/iov.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/iov.c 2019-01-12 16:32:12.067228460 -0700
|
|
@@ -95,7 +95,7 @@
|
|
static ssize_t
|
|
do_send_recv(int sockfd, struct iovec *iov, unsigned iov_cnt, bool do_send)
|
|
{
|
|
-#ifdef CONFIG_POSIX
|
|
+#if defined(CONFIG_POSIX) && !defined(__redox__)
|
|
ssize_t ret;
|
|
struct msghdr msg;
|
|
memset(&msg, 0, sizeof(msg));
|
|
diff -ruwN source/util/main-loop.c source-new/util/main-loop.c
|
|
--- source/util/main-loop.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/main-loop.c 2019-01-13 10:37:48.544674956 -0700
|
|
@@ -35,6 +35,10 @@
|
|
#include "block/aio.h"
|
|
#include "qemu/error-report.h"
|
|
|
|
+#if defined(__redox__)
|
|
+#define pthread_sigmask sigprocmask
|
|
+#endif
|
|
+
|
|
#ifndef _WIN32
|
|
|
|
/* If we have signalfd, we mask out the signals we want to handle and then
|
|
@@ -63,9 +67,12 @@
|
|
}
|
|
|
|
sigaction(info.ssi_signo, NULL, &action);
|
|
+#if !defined(__redox__)
|
|
if ((action.sa_flags & SA_SIGINFO) && action.sa_sigaction) {
|
|
sigaction_invoke(&action, &info);
|
|
- } else if (action.sa_handler) {
|
|
+ } else
|
|
+#endif
|
|
+ if (action.sa_handler) {
|
|
action.sa_handler(info.ssi_signo);
|
|
}
|
|
}
|
|
diff -ruwN source/util/osdep.c source-new/util/osdep.c
|
|
--- source/util/osdep.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/osdep.c 2019-01-13 09:31:50.920247468 -0700
|
|
@@ -138,10 +138,12 @@
|
|
goto fail;
|
|
}
|
|
|
|
+#if !defined(__redox__)
|
|
if ((flags & O_SYNC) != (dup_flags & O_SYNC)) {
|
|
errno = EINVAL;
|
|
goto fail;
|
|
}
|
|
+#endif
|
|
|
|
/* Set/unset flags that we can with fcntl */
|
|
if (fcntl(ret, F_SETFL, flags) == -1) {
|
|
@@ -236,6 +238,9 @@
|
|
|
|
static int qemu_lock_fcntl(int fd, int64_t start, int64_t len, int fl_type)
|
|
{
|
|
+#if defined(__redox__)
|
|
+ return 0;
|
|
+#else
|
|
int ret;
|
|
struct flock fl = {
|
|
.l_whence = SEEK_SET,
|
|
@@ -248,6 +253,7 @@
|
|
ret = fcntl(fd, fcntl_op_setlk, &fl);
|
|
} while (ret == -1 && errno == EINTR);
|
|
return ret == -1 ? -errno : 0;
|
|
+#endif
|
|
}
|
|
|
|
int qemu_lock_fd(int fd, int64_t start, int64_t len, bool exclusive)
|
|
@@ -262,6 +268,9 @@
|
|
|
|
int qemu_lock_fd_test(int fd, int64_t start, int64_t len, bool exclusive)
|
|
{
|
|
+#if defined(__redox__)
|
|
+ return 0;
|
|
+#else
|
|
int ret;
|
|
struct flock fl = {
|
|
.l_whence = SEEK_SET,
|
|
@@ -276,6 +285,7 @@
|
|
} else {
|
|
return fl.l_type == F_UNLCK ? 0 : -EAGAIN;
|
|
}
|
|
+#endif
|
|
}
|
|
#endif
|
|
|
|
diff -ruwN source/util/oslib-posix.c source-new/util/oslib-posix.c
|
|
--- source/util/oslib-posix.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/oslib-posix.c 2019-01-12 16:34:05.703955117 -0700
|
|
@@ -36,9 +36,17 @@
|
|
#include "qapi/error.h"
|
|
#include "qemu/sockets.h"
|
|
#include <libgen.h>
|
|
+#if !defined(__redox__)
|
|
#include <sys/signal.h>
|
|
+#endif
|
|
#include "qemu/cutils.h"
|
|
|
|
+#if defined(__redox__)
|
|
+#define pthread_sigmask sigprocmask
|
|
+#define sigsetjmp(env, savesigs) setjmp(env)
|
|
+#define siglongjmp longjmp
|
|
+#endif
|
|
+
|
|
#ifdef CONFIG_LINUX
|
|
#include <sys/syscall.h>
|
|
#endif
|
|
@@ -95,12 +103,13 @@
|
|
|
|
while (1) {
|
|
struct stat a, b;
|
|
+#if !defined(__redox__)
|
|
struct flock lock = {
|
|
.l_type = F_WRLCK,
|
|
.l_whence = SEEK_SET,
|
|
.l_len = 0,
|
|
};
|
|
-
|
|
+#endif
|
|
fd = qemu_open(path, O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
|
|
if (fd == -1) {
|
|
error_setg_errno(errp, errno, "Cannot open pid file");
|
|
@@ -112,10 +121,12 @@
|
|
goto fail_close;
|
|
}
|
|
|
|
+#if !defined(__redox__)
|
|
if (fcntl(fd, F_SETLK, &lock)) {
|
|
error_setg_errno(errp, errno, "Cannot lock pid file");
|
|
goto fail_close;
|
|
}
|
|
+#endif
|
|
|
|
/*
|
|
* Now make sure the path we locked is the same one that now
|
|
@@ -420,7 +431,11 @@
|
|
|
|
static inline int get_memset_num_threads(int smp_cpus)
|
|
{
|
|
+#if defined(__redox__)
|
|
+ long host_procs = 1;
|
|
+#else
|
|
long host_procs = sysconf(_SC_NPROCESSORS_ONLN);
|
|
+#endif
|
|
int ret = 1;
|
|
|
|
if (host_procs > 0) {
|
|
@@ -682,6 +697,7 @@
|
|
void sigaction_invoke(struct sigaction *action,
|
|
struct qemu_signalfd_siginfo *info)
|
|
{
|
|
+#if !defined(__redox__)
|
|
siginfo_t si = {};
|
|
si.si_signo = info->ssi_signo;
|
|
si.si_errno = info->ssi_errno;
|
|
@@ -708,4 +724,5 @@
|
|
si.si_uid = info->ssi_uid;
|
|
}
|
|
action->sa_sigaction(info->ssi_signo, &si, NULL);
|
|
+#endif
|
|
}
|
|
diff -ruwN source/util/qemu-progress.c source-new/util/qemu-progress.c
|
|
--- source/util/qemu-progress.c 2018-12-11 10:44:35.000000000 -0700
|
|
+++ source-new/util/qemu-progress.c 2019-01-13 10:34:53.704639662 -0700
|
|
@@ -25,6 +25,10 @@
|
|
#include "qemu/osdep.h"
|
|
#include "qemu-common.h"
|
|
|
|
+#if defined(__redox__)
|
|
+#define pthread_sigmask sigprocmask
|
|
+#endif
|
|
+
|
|
struct progress_state {
|
|
float current;
|
|
float last_print;
|