mirror of
https://gitlab.redox-os.org/redox-os/redox.git
synced 2026-06-21 20:34:17 +08:00
275 lines
7.5 KiB
Diff
275 lines
7.5 KiB
Diff
diff -ruwN source/CMakeLists.txt source-new/CMakeLists.txt
|
|
--- source/CMakeLists.txt 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/CMakeLists.txt 2025-09-16 14:15:31.813140608 +0700
|
|
@@ -1,3 +1,4 @@
|
|
+set (CMAKE_CXX_STANDARD 99)
|
|
cmake_minimum_required(VERSION 3.4)
|
|
|
|
if(POLICY CMP0091)
|
|
@@ -312,6 +313,18 @@
|
|
src/unix/hurd.c)
|
|
endif()
|
|
|
|
+
|
|
+if(CMAKE_SYSTEM_NAME STREQUAL "UnixPaths") # Redox
|
|
+ list(APPEND uv_libraries dl)
|
|
+ list(APPEND uv_sources
|
|
+ src/unix/no-fsevents.c
|
|
+ src/unix/proctitle.c
|
|
+ src/unix/posix-hrtime.c
|
|
+ src/unix/posix-poll.c
|
|
+ src/unix/redox.c
|
|
+ )
|
|
+endif()
|
|
+
|
|
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
|
list(APPEND uv_defines _GNU_SOURCE _POSIX_C_SOURCE=200112)
|
|
list(APPEND uv_libraries dl rt)
|
|
diff -ruwN source/include/uv/unix.h source-new/include/uv/unix.h
|
|
--- source/include/uv/unix.h 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/include/uv/unix.h 2025-09-16 11:42:40.882554686 +0700
|
|
@@ -66,6 +66,7 @@
|
|
defined(__MSYS__) || \
|
|
defined(__HAIKU__) || \
|
|
defined(__QNX__) || \
|
|
+ defined(__redox__) || \
|
|
defined(__GNU__)
|
|
# include "uv/posix.h"
|
|
#endif
|
|
diff -ruwN source/src/unix/core.c source-new/src/unix/core.c
|
|
--- source/src/unix/core.c 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/src/unix/core.c 2025-09-16 11:42:40.882554686 +0700
|
|
@@ -97,6 +97,10 @@
|
|
# include <sanitizer/linux_syscall_hooks.h>
|
|
#endif
|
|
|
|
+#if defined(__redox__)
|
|
+#define MSG_CMSG_CLOEXEC 0x40000000 //linux specific flag
|
|
+#endif
|
|
+
|
|
static void uv__run_pending(uv_loop_t* loop);
|
|
|
|
/* Verify that uv_buf_t is ABI-compatible with struct iovec. */
|
|
@@ -709,7 +713,8 @@
|
|
defined(__FreeBSD__) || \
|
|
defined(__NetBSD__) || \
|
|
defined(__OpenBSD__) || \
|
|
- defined(__linux__)
|
|
+ defined(__linux__) || \
|
|
+ defined(__redox__)
|
|
ssize_t rc;
|
|
rc = recvmsg(fd, msg, flags | MSG_CMSG_CLOEXEC);
|
|
if (rc == -1)
|
|
diff -ruwN source/src/unix/fs.c source-new/src/unix/fs.c
|
|
--- source/src/unix/fs.c 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/src/unix/fs.c 2025-09-16 11:42:40.882554686 +0700
|
|
@@ -87,7 +87,8 @@
|
|
defined(__MVS__) || \
|
|
defined(__NetBSD__) || \
|
|
defined(__HAIKU__) || \
|
|
- defined(__QNX__)
|
|
+ defined(__QNX__) || \
|
|
+ defined(__redox__)
|
|
# include <sys/statvfs.h>
|
|
#else
|
|
# include <sys/statfs.h>
|
|
@@ -648,13 +649,13 @@
|
|
defined(__MVS__) || \
|
|
defined(__NetBSD__) || \
|
|
defined(__HAIKU__) || \
|
|
- defined(__QNX__)
|
|
+ defined(__QNX__) || \
|
|
+ defined(__redox__)
|
|
struct statvfs buf;
|
|
|
|
if (0 != statvfs(req->path, &buf))
|
|
#else
|
|
struct statfs buf;
|
|
-
|
|
if (0 != statfs(req->path, &buf))
|
|
#endif /* defined(__sun) */
|
|
return -1;
|
|
@@ -670,7 +671,8 @@
|
|
defined(__OpenBSD__) || \
|
|
defined(__NetBSD__) || \
|
|
defined(__HAIKU__) || \
|
|
- defined(__QNX__)
|
|
+ defined(__QNX__) || \
|
|
+ defined(__redox__)
|
|
stat_fs->f_type = 0; /* f_type is not supported. */
|
|
#else
|
|
stat_fs->f_type = buf.f_type;
|
|
diff -ruwN source/src/unix/proctitle.c source-new/src/unix/proctitle.c
|
|
--- source/src/unix/proctitle.c 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/src/unix/proctitle.c 2025-09-16 11:42:40.882554686 +0700
|
|
@@ -30,7 +30,13 @@
|
|
size_t cap; /* Maximum capacity. Computed once in uv_setup_args(). */
|
|
};
|
|
|
|
+#if defined(__redox__)
|
|
+void uv__set_process_title(const char* title) {
|
|
+ // requires sys/prctl
|
|
+}
|
|
+#else
|
|
extern void uv__set_process_title(const char* title);
|
|
+#endif
|
|
|
|
static uv_mutex_t process_title_mutex;
|
|
static uv_once_t process_title_mutex_once = UV_ONCE_INIT;
|
|
diff -ruwN source/src/unix/redox.c source-new/src/unix/redox.c
|
|
--- source/src/unix/redox.c 1970-01-01 07:00:00.000000000 +0700
|
|
+++ source-new/src/unix/redox.c 2025-09-16 14:28:29.209614311 +0700
|
|
@@ -0,0 +1,102 @@
|
|
+/* Copyright libuv contributors. All rights reserved.
|
|
+ *
|
|
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
+ * of this software and associated documentation files (the "Software"), to
|
|
+ * deal in the Software without restriction, including without limitation the
|
|
+ * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
+ * sell copies of the Software, and to permit persons to whom the Software is
|
|
+ * furnished to do so, subject to the following conditions:
|
|
+ *
|
|
+ * The above copyright notice and this permission notice shall be included in
|
|
+ * all copies or substantial portions of the Software.
|
|
+ *
|
|
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
+ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
+ * IN THE SOFTWARE.
|
|
+ */
|
|
+
|
|
+#include "uv.h"
|
|
+#include "internal.h"
|
|
+
|
|
+#include <errno.h>
|
|
+#include <string.h>
|
|
+#include <stdio.h>
|
|
+
|
|
+static void
|
|
+get_mem_info(uint64_t* totalmem, uint64_t* freemem) {
|
|
+ *totalmem = 0;
|
|
+ *freemem = 0;
|
|
+}
|
|
+
|
|
+
|
|
+void uv_loadavg(double avg[3]) {
|
|
+ avg[0] = 0.0;
|
|
+ avg[1] = 0.0;
|
|
+ avg[2] = 0.0;
|
|
+}
|
|
+
|
|
+
|
|
+int uv_exepath(char* buffer, size_t* size) {
|
|
+ if (buffer == NULL || size == NULL || *size == 0) {
|
|
+ return UV_EINVAL;
|
|
+ }
|
|
+ FILE* fp = fopen("/scheme/sys/exe", "r");
|
|
+ if (fp == NULL) {
|
|
+ return -errno;
|
|
+ }
|
|
+ if (fgets(buffer, *size, fp) == NULL) {
|
|
+ fclose(fp);
|
|
+ return UV_EIO;
|
|
+ }
|
|
+ fclose(fp);
|
|
+ buffer[strcspn(buffer, "\r\n")] = '\0';
|
|
+ *size = strlen(buffer);
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+int uv_interface_addresses(uv_interface_address_t** addresses, int* count) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+uint64_t uv_get_free_memory(void) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+uint64_t uv_get_total_memory(void) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+uint64_t uv_get_constrained_memory(void) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+uint64_t uv_get_available_memory(void) {
|
|
+ return uv_get_free_memory();
|
|
+}
|
|
+
|
|
+
|
|
+int uv_resident_set_memory(size_t* rss) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+int uv_uptime(double* uptime) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+
|
|
+int uv_cpu_info(uv_cpu_info_t** cpu_infos, int* count) {
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+void uv_free_interface_addresses(uv_interface_address_t* addresses,
|
|
+ int count) {
|
|
+}
|
|
diff -ruwN source/src/unix/stream.c source-new/src/unix/stream.c
|
|
--- source/src/unix/stream.c 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/src/unix/stream.c 2025-09-16 11:42:40.883554697 +0700
|
|
@@ -29,7 +29,14 @@
|
|
#include <errno.h>
|
|
|
|
#include <sys/types.h>
|
|
+#if defined(__redox__)
|
|
+#define _GNU_SOURCE
|
|
+#include <stdint.h>
|
|
#include <sys/socket.h>
|
|
+#include <netinet/in.h>
|
|
+#else
|
|
+#include <sys/socket.h>
|
|
+#endif
|
|
#include <sys/uio.h>
|
|
#include <sys/un.h>
|
|
#include <unistd.h>
|
|
@@ -39,6 +46,7 @@
|
|
# include <sys/event.h>
|
|
# include <sys/time.h>
|
|
# include <sys/select.h>
|
|
+#endif
|
|
|
|
/* Forward declaration */
|
|
typedef struct uv__stream_select_s uv__stream_select_t;
|
|
@@ -58,7 +66,6 @@
|
|
fd_set* swrite;
|
|
size_t swrite_sz;
|
|
};
|
|
-#endif /* defined(__APPLE__) */
|
|
|
|
union uv__cmsg {
|
|
struct cmsghdr hdr;
|
|
diff -ruwN source/src/unix/udp.c source-new/src/unix/udp.c
|
|
--- source/src/unix/udp.c 2023-05-19 18:21:01.000000000 +0700
|
|
+++ source-new/src/unix/udp.c 2025-09-16 11:42:40.883554697 +0700
|
|
@@ -31,6 +31,12 @@
|
|
#include <xti.h>
|
|
#endif
|
|
#include <sys/un.h>
|
|
+#if defined(__redox__)
|
|
+#include <netinet/in.h>
|
|
+#include <netinet/ip.h>
|
|
+#include <sys/socket.h>
|
|
+#include <arpa/inet.h>
|
|
+#endif
|
|
|
|
#if defined(IPV6_JOIN_GROUP) && !defined(IPV6_ADD_MEMBERSHIP)
|
|
# define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
|