Rebase against 7ed63c30e8dee3509c52e11230470be2dcfe6cf5.

This commit is contained in:
Alistair Leslie-Hughes
2023-05-31 11:01:58 +10:00
parent ba6e2398d7
commit 6173bd8b0d
9 changed files with 69 additions and 543 deletions

View File

@@ -1,22 +1,22 @@
From 271f43a1fafb19e1404b05ec597b504ecad74784 Mon Sep 17 00:00:00 2001
From d4094baaba721220b0a81170d1f9e6c276dae4ae Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 12:09:22 -0500
Subject: [PATCH] ntdll: Create eventfd-based objects for semaphores.
---
dlls/ntdll/Makefile.in | 1 +
dlls/ntdll/unix/esync.c | 271 +++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.c | 270 +++++++++++++++++++++++++++++++++++++++
dlls/ntdll/unix/esync.h | 35 +++++
dlls/ntdll/unix/loader.c | 2 +
dlls/ntdll/unix/server.c | 4 +-
dlls/ntdll/unix/sync.c | 4 +
server/esync.c | 1 +
7 files changed, 316 insertions(+), 2 deletions(-)
7 files changed, 315 insertions(+), 2 deletions(-)
create mode 100644 dlls/ntdll/unix/esync.c
create mode 100644 dlls/ntdll/unix/esync.h
diff --git a/dlls/ntdll/Makefile.in b/dlls/ntdll/Makefile.in
index 07688a5fcf6..4e490c475a2 100644
index f8ca3e689ec..82af2152595 100644
--- a/dlls/ntdll/Makefile.in
+++ b/dlls/ntdll/Makefile.in
@@ -47,6 +47,7 @@ C_SRCS = \
@@ -29,10 +29,10 @@ index 07688a5fcf6..4e490c475a2 100644
unix/loadorder.c \
diff --git a/dlls/ntdll/unix/esync.c b/dlls/ntdll/unix/esync.c
new file mode 100644
index 00000000000..9e1ef7d8afd
index 00000000000..7be4e03fa34
--- /dev/null
+++ b/dlls/ntdll/unix/esync.c
@@ -0,0 +1,271 @@
@@ -0,0 +1,270 @@
+/*
+ * eventfd-based synchronization objects
+ *
@@ -73,7 +73,6 @@ index 00000000000..9e1ef7d8afd
+
+#include "ntstatus.h"
+#define WIN32_NO_STATUS
+#define NONAMELESSUNION
+#include "windef.h"
+#include "winternl.h"
+#include "wine/server.h"
@@ -346,10 +345,10 @@ index 00000000000..a50a755149a
+
+extern int receive_fd( obj_handle_t *handle ) DECLSPEC_HIDDEN;
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c
index 35f2e5f986f..4d95c29ab24 100644
index 5b8b6962b4a..92855f7cccc 100644
--- a/dlls/ntdll/unix/loader.c
+++ b/dlls/ntdll/unix/loader.c
@@ -89,6 +89,7 @@
@@ -87,6 +87,7 @@
#include "winioctl.h"
#include "winternl.h"
#include "unix_private.h"
@@ -357,7 +356,7 @@ index 35f2e5f986f..4d95c29ab24 100644
#include "wine/list.h"
#include "wine/debug.h"
@@ -2188,6 +2189,7 @@ static void start_main_thread(void)
@@ -2055,6 +2056,7 @@ static void start_main_thread(void)
signal_alloc_thread( teb );
dbg_init();
startup_info_size = server_init_process();
@@ -366,10 +365,10 @@ index 35f2e5f986f..4d95c29ab24 100644
init_cpu_info();
init_files();
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c
index b7d8733f2bc..8cd5f0474e6 100644
index 227784448d3..99563e43cc3 100644
--- a/dlls/ntdll/unix/server.c
+++ b/dlls/ntdll/unix/server.c
@@ -106,7 +106,7 @@ sigset_t server_block_set; /* signals to block during server calls */
@@ -103,7 +103,7 @@ sigset_t server_block_set; /* signals to block during server calls */
static int fd_socket = -1; /* socket to exchange file descriptors with the server */
static int initial_cwd = -1;
static pid_t server_pid;
@@ -378,7 +377,7 @@ index b7d8733f2bc..8cd5f0474e6 100644
/* atomically exchange a 64-bit value */
static inline LONG64 interlocked_xchg64( LONG64 *dest, LONG64 val )
@@ -834,7 +834,7 @@ void wine_server_send_fd( int fd )
@@ -907,7 +907,7 @@ void wine_server_send_fd( int fd )
*
* Receive a file descriptor passed from the server.
*/
@@ -388,10 +387,10 @@ index b7d8733f2bc..8cd5f0474e6 100644
struct iovec vec;
struct msghdr msghdr;
diff --git a/dlls/ntdll/unix/sync.c b/dlls/ntdll/unix/sync.c
index 9112572c67d..c5f30428f79 100644
index d1e4e5ee111..b5299c323e3 100644
--- a/dlls/ntdll/unix/sync.c
+++ b/dlls/ntdll/unix/sync.c
@@ -64,6 +64,7 @@
@@ -63,6 +63,7 @@
#include "wine/server.h"
#include "wine/debug.h"
#include "unix_private.h"
@@ -399,7 +398,7 @@ index 9112572c67d..c5f30428f79 100644
WINE_DEFAULT_DEBUG_CHANNEL(sync);
@@ -273,6 +274,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
@@ -272,6 +273,9 @@ NTSTATUS WINAPI NtCreateSemaphore( HANDLE *handle, ACCESS_MASK access, const OBJ
if (max <= 0 || initial < 0 || initial > max) return STATUS_INVALID_PARAMETER;
if ((ret = alloc_object_attributes( attr, &objattr, &len ))) return ret;
@@ -410,7 +409,7 @@ index 9112572c67d..c5f30428f79 100644
{
req->access = access;
diff --git a/server/esync.c b/server/esync.c
index b9dbfa322bc..99e57eca44c 100644
index 35b4833fd4c..75ef586df30 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -41,6 +41,7 @@
@@ -422,5 +421,5 @@ index b9dbfa322bc..99e57eca44c 100644
int do_esync(void)
{
--
2.38.1
2.40.1