Rebase against 24b9203d3544001dd51894f1c1edd99819367198.

This commit is contained in:
Alistair Leslie-Hughes
2021-01-28 09:08:29 +11:00
parent bcf5899a3c
commit 9692b2e5eb
10 changed files with 68 additions and 280 deletions

View File

@@ -1,4 +1,4 @@
From af7dc115ada8acf19aebedfc091e048b919c2478 Mon Sep 17 00:00:00 2001
From 3a159edee2db7634475ee665e3ab0cf56c5425f6 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 18:51:40 -0500
Subject: [PATCH] server: Add an object operation to grab the esync file
@@ -110,10 +110,10 @@ index 0bad4d7a260..176cf1b817e 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/console.c b/server/console.c
index 295db7767b2..a67f1918a3a 100644
index d1f948b23a6..cc534e8c9c1 100644
--- a/server/console.c
+++ b/server/console.c
@@ -82,6 +82,7 @@ static const struct object_ops console_ops =
@@ -81,6 +81,7 @@ static const struct object_ops console_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_signaled, /* signaled */
@@ -121,7 +121,7 @@ index 295db7767b2..a67f1918a3a 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_get_fd, /* get_fd */
@@ -157,6 +158,7 @@ static const struct object_ops console_server_ops =
@@ -156,6 +157,7 @@ static const struct object_ops console_server_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
console_server_signaled, /* signaled */
@@ -129,7 +129,7 @@ index 295db7767b2..a67f1918a3a 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_server_get_fd, /* get_fd */
@@ -225,6 +227,7 @@ static const struct object_ops screen_buffer_ops =
@@ -224,6 +226,7 @@ static const struct object_ops screen_buffer_ops =
screen_buffer_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -137,7 +137,7 @@ index 295db7767b2..a67f1918a3a 100644
NULL, /* satisfied */
no_signal, /* signal */
screen_buffer_get_fd, /* get_fd */
@@ -274,6 +277,7 @@ static const struct object_ops console_device_ops =
@@ -273,6 +276,7 @@ static const struct object_ops console_device_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -145,7 +145,7 @@ index 295db7767b2..a67f1918a3a 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -311,6 +315,7 @@ static const struct object_ops console_input_ops =
@@ -310,6 +314,7 @@ static const struct object_ops console_input_ops =
console_input_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -153,7 +153,7 @@ index 295db7767b2..a67f1918a3a 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_input_get_fd, /* get_fd */
@@ -367,6 +372,7 @@ static const struct object_ops console_output_ops =
@@ -366,6 +371,7 @@ static const struct object_ops console_output_ops =
console_output_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -161,7 +161,7 @@ index 295db7767b2..a67f1918a3a 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
console_output_get_fd, /* get_fd */
@@ -424,6 +430,7 @@ static const struct object_ops console_connection_ops =
@@ -423,6 +429,7 @@ static const struct object_ops console_connection_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -170,7 +170,7 @@ index 295db7767b2..a67f1918a3a 100644
no_signal, /* signal */
console_connection_get_fd, /* get_fd */
diff --git a/server/debugger.c b/server/debugger.c
index e4a6c1e43a8..c37f97aa0b6 100644
index 9531a4b6909..7eb7847a9da 100644
--- a/server/debugger.c
+++ b/server/debugger.c
@@ -73,6 +73,7 @@ static const struct object_ops debug_event_ops =
@@ -181,10 +181,10 @@ index e4a6c1e43a8..c37f97aa0b6 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
no_get_fd, /* get_fd */
@@ -101,6 +102,7 @@ static const struct object_ops debug_ctx_ops =
@@ -103,6 +104,7 @@ static const struct object_ops debug_obj_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
debug_ctx_signaled, /* signaled */
debug_obj_signaled, /* signaled */
+ NULL, /* get_esync_fd */
no_satisfied, /* satisfied */
no_signal, /* signal */
@@ -226,7 +226,7 @@ index 652da83e1e2..cc9aa2358a4 100644
no_signal, /* signal */
device_file_get_fd, /* get_fd */
diff --git a/server/directory.c b/server/directory.c
index 81d02d6f64e..1ffa35f0cc8 100644
index ca9f978ff7f..2d25667106e 100644
--- a/server/directory.c
+++ b/server/directory.c
@@ -57,6 +57,7 @@ static const struct object_ops object_type_ops =
@@ -278,7 +278,7 @@ index cba9472aa3d..06655fc7dd6 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/fd.c b/server/fd.c
index c3c53489212..d3b1e515b52 100644
index 673055718f8..5b76e3a876e 100644
--- a/server/fd.c
+++ b/server/fd.c
@@ -216,6 +216,7 @@ static const struct object_ops fd_ops =
@@ -314,10 +314,10 @@ index c3c53489212..d3b1e515b52 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/file.c b/server/file.c
index 2cc4a9d978c..5c28b1c176d 100644
index d7e1af5841a..308d19cec31 100644
--- a/server/file.c
+++ b/server/file.c
@@ -86,6 +86,7 @@ static const struct object_ops file_ops =
@@ -85,6 +85,7 @@ static const struct object_ops file_ops =
add_queue, /* add_queue */
remove_queue, /* remove_queue */
default_fd_signaled, /* signaled */
@@ -386,7 +386,7 @@ index 5d26c606080..2e09bab22fa 100644
no_signal, /* signal */
mailslot_device_file_get_fd, /* get_fd */
diff --git a/server/mapping.c b/server/mapping.c
index 6c2e7a1fd2b..d06ceaa1a66 100644
index 9c51aa3bec7..70395b804b0 100644
--- a/server/mapping.c
+++ b/server/mapping.c
@@ -68,6 +68,7 @@ static const struct object_ops ranges_ops =
@@ -483,7 +483,7 @@ index 73058fd3f99..02878ef0e0e 100644
void (*satisfied)(struct object *,struct wait_queue_entry *);
/* signal an object */
diff --git a/server/process.c b/server/process.c
index 5b3e29e5dfd..a7db8332702 100644
index 3dabe0e6cfa..a8b11686315 100644
--- a/server/process.c
+++ b/server/process.c
@@ -78,6 +78,7 @@ static const struct object_ops process_ops =
@@ -531,10 +531,10 @@ index a552fed57bb..263bb46ea00 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/registry.c b/server/registry.c
index c937e051597..8110bbb340c 100644
index 64aec1d83c9..49a3c679207 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -160,6 +160,7 @@ static const struct object_ops key_ops =
@@ -161,6 +161,7 @@ static const struct object_ops key_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -591,7 +591,7 @@ index 7c2bf2cc154..b6d6dcfc4b6 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/sock.c b/server/sock.c
index 1ff56f7bbe5..57dd5a7c6d7 100644
index 8c146a0a8f8..57d994ee332 100644
--- a/server/sock.c
+++ b/server/sock.c
@@ -188,6 +188,7 @@ static const struct object_ops sock_ops =
@@ -602,7 +602,7 @@ index 1ff56f7bbe5..57dd5a7c6d7 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
sock_get_fd, /* get_fd */
@@ -1527,6 +1528,7 @@ static const struct object_ops ifchange_ops =
@@ -1533,6 +1534,7 @@ static const struct object_ops ifchange_ops =
add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -610,7 +610,7 @@ index 1ff56f7bbe5..57dd5a7c6d7 100644
no_satisfied, /* satisfied */
no_signal, /* signal */
ifchange_get_fd, /* get_fd */
@@ -1748,6 +1750,7 @@ static const struct object_ops socket_device_ops =
@@ -1754,6 +1756,7 @@ static const struct object_ops socket_device_ops =
no_add_queue, /* add_queue */
NULL, /* remove_queue */
NULL, /* signaled */
@@ -631,7 +631,7 @@ index 0b85350e1a5..c7212618cac 100644
no_signal, /* signal */
no_get_fd, /* get_fd */
diff --git a/server/thread.c b/server/thread.c
index 0a0d957384b..c10f1710542 100644
index f493b7b2aa8..29a692361f8 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -110,6 +110,7 @@ static const struct object_ops thread_apc_ops =

View File

@@ -1,4 +1,4 @@
From 3d3cd983add6183a0e38c427d15895c331a2b666 Mon Sep 17 00:00:00 2001
From 882fe7c0815814c912722d663c981c411e7314f5 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Fri, 8 Jun 2018 22:04:29 -0500
Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
@@ -9,7 +9,7 @@ Subject: [PATCH] server: Create eventfd file descriptors for thread objects.
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/server/thread.c b/server/thread.c
index 785203b7fa6..b52a1f5048c 100644
index 2d2a80a61ef..c52057d1f50 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -172,6 +172,7 @@ static const struct object_ops context_ops =
@@ -34,7 +34,7 @@ index 785203b7fa6..b52a1f5048c 100644
thread->teb = 0;
thread->entry_point = 0;
+ thread->esync_fd = -1;
thread->debug_ctx = NULL;
thread->debug_obj = NULL;
thread->system_regs = 0;
thread->queue = NULL;
@@ -361,6 +363,9 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
@@ -72,7 +72,7 @@ index 785203b7fa6..b52a1f5048c 100644
{
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | THREAD_QUERY_INFORMATION | THREAD_GET_CONTEXT;
diff --git a/server/thread.h b/server/thread.h
index 78ca4c201b2..faffe13d795 100644
index 4a8c5b1cb2c..e6a9f987c9e 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -54,6 +54,7 @@ struct thread
@@ -80,9 +80,9 @@ index 78ca4c201b2..faffe13d795 100644
thread_id_t id; /* thread id */
struct list mutex_list; /* list of currently owned mutexes */
+ int esync_fd; /* esync file descriptor (signalled on exit) */
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
struct debug_obj *debug_obj; /* debugger context if this thread is a debugger */
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--
2.28.0
2.29.2

View File

@@ -1,4 +1,4 @@
From b04ab24c90337271146425edc2059328e42743b6 Mon Sep 17 00:00:00 2001
From 607d2418e9997885192791cb54a9cdfdaf77eee1 Mon Sep 17 00:00:00 2001
From: Zebediah Figura <zfigura@codeweavers.com>
Date: Mon, 6 Jul 2020 17:17:31 -0500
Subject: [PATCH] ntdll, server: Implement alertable waits.
@@ -164,7 +164,7 @@ index d1a282c65e9..2a7c3865617 100644
/* We need to let the server know when we are doing a message wait, and when we
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h
index 23731f0fdc6..b2020b6311a 100644
index 1d6ba95d2a1..9c8e334aba6 100644
--- a/dlls/ntdll/unix/unix_private.h
+++ b/dlls/ntdll/unix/unix_private.h
@@ -50,6 +50,7 @@ struct ntdll_thread_data
@@ -176,10 +176,10 @@ index 23731f0fdc6..b2020b6311a 100644
int reply_fd; /* fd for receiving server replies */
int wait_fd[2]; /* fd for sleeping server requests */
diff --git a/dlls/ntdll/unix/virtual.c b/dlls/ntdll/unix/virtual.c
index 785583a340a..93646bc51f4 100644
index c1e79a210f4..5631414bf4c 100644
--- a/dlls/ntdll/unix/virtual.c
+++ b/dlls/ntdll/unix/virtual.c
@@ -2552,6 +2552,7 @@ static void init_teb( TEB *teb, PEB *peb )
@@ -2565,6 +2565,7 @@ static void init_teb( TEB *teb, PEB *peb )
InitializeListHead( &teb->ActivationContextStack.FrameListCache );
teb->StaticUnicodeString.Buffer = teb->StaticUnicodeBuffer;
teb->StaticUnicodeString.MaximumLength = sizeof(teb->StaticUnicodeBuffer);
@@ -244,10 +244,10 @@ index aeb58c5469c..cea025d9308 100644
void esync_clear( int fd );
diff --git a/server/protocol.def b/server/protocol.def
index 30296aedde8..d2772aacec2 100644
index e60d6f7e8dd..34eaff6207c 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -3707,3 +3707,7 @@ enum esync_type
@@ -3718,3 +3718,7 @@ enum esync_type
@REQ(esync_msgwait)
int in_msgwait; /* are we in a message wait? */
@END
@@ -256,7 +256,7 @@ index 30296aedde8..d2772aacec2 100644
+@REQ(get_esync_apc_fd)
+@END
diff --git a/server/thread.c b/server/thread.c
index b52a1f5048c..6fb8684f5e0 100644
index c52057d1f50..0b905e6a155 100644
--- a/server/thread.c
+++ b/server/thread.c
@@ -227,6 +227,7 @@ static inline void init_thread_structure( struct thread *thread )
@@ -264,7 +264,7 @@ index b52a1f5048c..6fb8684f5e0 100644
thread->entry_point = 0;
thread->esync_fd = -1;
+ thread->esync_apc_fd = -1;
thread->debug_ctx = NULL;
thread->debug_obj = NULL;
thread->system_regs = 0;
thread->queue = NULL;
@@ -364,7 +365,10 @@ struct thread *create_thread( int fd, struct process *process, const struct secu
@@ -304,7 +304,7 @@ index b52a1f5048c..6fb8684f5e0 100644
}
diff --git a/server/thread.h b/server/thread.h
index faffe13d795..0f6108b684a 100644
index e6a9f987c9e..ff86da99798 100644
--- a/server/thread.h
+++ b/server/thread.h
@@ -55,6 +55,7 @@ struct thread
@@ -312,7 +312,7 @@ index faffe13d795..0f6108b684a 100644
struct list mutex_list; /* list of currently owned mutexes */
int esync_fd; /* esync file descriptor (signalled on exit) */
+ int esync_apc_fd; /* esync apc fd (signalled when APCs are present) */
struct debug_ctx *debug_ctx; /* debugger context if this thread is a debugger */
struct debug_obj *debug_obj; /* debugger context if this thread is a debugger */
unsigned int system_regs; /* which system regs have been set */
struct msg_queue *queue; /* message queue */
--