You've already forked wine-staging
mirror of
https://gitlab.winehq.org/wine/wine-staging.git
synced 2025-04-13 14:42:51 -07:00
Rebase against 9d7d68747b06a03893df99c4beea36b762508603
This commit is contained in:
@@ -1,8 +1,7 @@
|
||||
From 4473e26d9c3177ee7a42f023fcbe48edc672f9bc Mon Sep 17 00:00:00 2001
|
||||
From e6e0ef574ce53d5b5e94068ae9dc137c2c7dee92 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Fri, 8 Jun 2018 18:57:12 -0500
|
||||
Subject: [PATCH 15/83] server: Create eventfd file descriptors for process
|
||||
objects.
|
||||
Subject: [PATCH] server: Create eventfd file descriptors for process objects.
|
||||
|
||||
---
|
||||
server/esync.c | 33 +++++++++++++++++++++++++++++++++
|
||||
@@ -13,7 +12,7 @@ Subject: [PATCH 15/83] server: Create eventfd file descriptors for process
|
||||
create mode 100644 server/esync.h
|
||||
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index 351da1a7c..da26d27cb 100644
|
||||
index 351da1a7cb2..da26d27cbc8 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -35,6 +35,21 @@
|
||||
@@ -65,7 +64,7 @@ index 351da1a7c..da26d27cb 100644
|
||||
struct esync *esync;
|
||||
diff --git a/server/esync.h b/server/esync.h
|
||||
new file mode 100644
|
||||
index 000000000..f93535b7b
|
||||
index 00000000000..f93535b7b4c
|
||||
--- /dev/null
|
||||
+++ b/server/esync.h
|
||||
@@ -0,0 +1,22 @@
|
||||
@@ -92,7 +91,7 @@ index 000000000..f93535b7b
|
||||
+extern int do_esync(void);
|
||||
+int esync_create_fd( int initval, int flags );
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index a96972e6b..0bb220dba 100644
|
||||
index c4cb041f293..ed03210a5f5 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -48,6 +48,7 @@
|
||||
@@ -103,15 +102,15 @@ index a96972e6b..0bb220dba 100644
|
||||
|
||||
/* process structure */
|
||||
|
||||
@@ -66,6 +67,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access
|
||||
static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
@@ -67,6 +68,7 @@ static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
static void process_poll_event( struct fd *fd, int event );
|
||||
static struct list *process_get_kernel_obj_list( struct object *obj );
|
||||
static void process_destroy( struct object *obj );
|
||||
+static int process_get_esync_fd( struct object *obj );
|
||||
static void terminate_process( struct process *process, struct thread *skip, int exit_code );
|
||||
|
||||
static const struct object_ops process_ops =
|
||||
@@ -76,7 +78,7 @@ static const struct object_ops process_ops =
|
||||
@@ -77,7 +79,7 @@ static const struct object_ops process_ops =
|
||||
add_queue, /* add_queue */
|
||||
remove_queue, /* remove_queue */
|
||||
process_signaled, /* signaled */
|
||||
@@ -120,15 +119,15 @@ index a96972e6b..0bb220dba 100644
|
||||
no_satisfied, /* satisfied */
|
||||
no_signal, /* signal */
|
||||
no_get_fd, /* get_fd */
|
||||
@@ -529,6 +531,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -531,6 +533,7 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
process->trace_data = 0;
|
||||
process->rawinput_mouse = NULL;
|
||||
process->rawinput_kbd = NULL;
|
||||
+ process->esync_fd = -1;
|
||||
list_init( &process->kernel_object );
|
||||
list_init( &process->thread_list );
|
||||
list_init( &process->locks );
|
||||
list_init( &process->asyncs );
|
||||
@@ -572,6 +575,9 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
@@ -575,6 +578,9 @@ struct process *create_process( int fd, struct process *parent, int inherit_all,
|
||||
}
|
||||
if (!process->handles || !process->token) goto error;
|
||||
|
||||
@@ -138,7 +137,7 @@ index a96972e6b..0bb220dba 100644
|
||||
set_fd_events( process->msg_fd, POLLIN ); /* start listening to events */
|
||||
return process;
|
||||
|
||||
@@ -620,6 +626,9 @@ static void process_destroy( struct object *obj )
|
||||
@@ -623,6 +629,9 @@ static void process_destroy( struct object *obj )
|
||||
if (process->id) free_ptid( process->id );
|
||||
if (process->token) release_object( process->token );
|
||||
free( process->dir_cache );
|
||||
@@ -148,7 +147,7 @@ index a96972e6b..0bb220dba 100644
|
||||
}
|
||||
|
||||
/* dump a process on stdout for debugging purposes */
|
||||
@@ -643,6 +652,12 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
@@ -647,6 +656,12 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
return !process->running_threads;
|
||||
}
|
||||
|
||||
@@ -162,13 +161,13 @@ index a96972e6b..0bb220dba 100644
|
||||
{
|
||||
if (access & GENERIC_READ) access |= STANDARD_RIGHTS_READ | PROCESS_QUERY_INFORMATION | PROCESS_VM_READ;
|
||||
diff --git a/server/process.h b/server/process.h
|
||||
index ea2809194..f8fd12833 100644
|
||||
index 41267a27df5..02765f2f122 100644
|
||||
--- a/server/process.h
|
||||
+++ b/server/process.h
|
||||
@@ -96,6 +96,7 @@ struct process
|
||||
struct list rawinput_devices;/* list of registered rawinput devices */
|
||||
@@ -97,6 +97,7 @@ struct process
|
||||
const struct rawinput_device *rawinput_mouse; /* rawinput mouse device, if any */
|
||||
const struct rawinput_device *rawinput_kbd; /* rawinput keyboard device, if any */
|
||||
struct list kernel_object; /* list of kernel object pointers */
|
||||
+ int esync_fd; /* esync file descriptor (signaled on exit) */
|
||||
};
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
From 29517778d9000de8de3217bcd6f1a2bb933123c6 Mon Sep 17 00:00:00 2001
|
||||
From 91c96ca57892577e20be532ae58b423fea1750b2 Mon Sep 17 00:00:00 2001
|
||||
From: Zebediah Figura <z.figura12@gmail.com>
|
||||
Date: Sat, 9 Jun 2018 14:44:54 -0500
|
||||
Subject: [PATCH] server, ntdll: Also wait on the queue fd when waiting for
|
||||
@@ -23,7 +23,7 @@ fix the 'drives' tab.
|
||||
8 files changed, 60 insertions(+), 23 deletions(-)
|
||||
|
||||
diff --git a/dlls/ntdll/esync.c b/dlls/ntdll/esync.c
|
||||
index 5d8dbac2d..dcb7801d9 100644
|
||||
index 5d8dbac2df4..dcb7801d912 100644
|
||||
--- a/dlls/ntdll/esync.c
|
||||
+++ b/dlls/ntdll/esync.c
|
||||
@@ -80,17 +80,9 @@ void __wine_esync_set_queue_fd( int fd )
|
||||
@@ -140,7 +140,7 @@ index 5d8dbac2d..dcb7801d9 100644
|
||||
* we were waiting for. So keep waiting. */
|
||||
NtQuerySystemTime( &now );
|
||||
diff --git a/server/esync.c b/server/esync.c
|
||||
index 4f7ff6bda..1f8c0d516 100644
|
||||
index 4f7ff6bdaed..1f8c0d5167a 100644
|
||||
--- a/server/esync.c
|
||||
+++ b/server/esync.c
|
||||
@@ -150,11 +150,12 @@ int esync_create_fd( int initval, int flags )
|
||||
@@ -176,7 +176,7 @@ index 4f7ff6bda..1f8c0d516 100644
|
||||
}
|
||||
else
|
||||
diff --git a/server/event.c b/server/event.c
|
||||
index d2f9e378c..79287e7ed 100644
|
||||
index d2f9e378cb1..79287e7edc0 100644
|
||||
--- a/server/event.c
|
||||
+++ b/server/event.c
|
||||
@@ -50,7 +50,7 @@ static void event_dump( struct object *obj, int verbose );
|
||||
@@ -201,7 +201,7 @@ index d2f9e378c..79287e7ed 100644
|
||||
}
|
||||
|
||||
diff --git a/server/object.h b/server/object.h
|
||||
index ee0f1f776..ca5a191f9 100644
|
||||
index ee0f1f776e3..ca5a191f975 100644
|
||||
--- a/server/object.h
|
||||
+++ b/server/object.h
|
||||
@@ -69,7 +69,7 @@ struct object_ops
|
||||
@@ -214,19 +214,19 @@ index ee0f1f776..ca5a191f9 100644
|
||||
void (*satisfied)(struct object *,struct wait_queue_entry *);
|
||||
/* signal an object */
|
||||
diff --git a/server/process.c b/server/process.c
|
||||
index 1ce2fb05c..6e6dfc41c 100644
|
||||
index ed03210a5f5..7fdbfb98cae 100644
|
||||
--- a/server/process.c
|
||||
+++ b/server/process.c
|
||||
@@ -67,7 +67,7 @@ static unsigned int process_map_access( struct object *obj, unsigned int access
|
||||
static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
@@ -68,7 +68,7 @@ static struct security_descriptor *process_get_sd( struct object *obj );
|
||||
static void process_poll_event( struct fd *fd, int event );
|
||||
static struct list *process_get_kernel_obj_list( struct object *obj );
|
||||
static void process_destroy( struct object *obj );
|
||||
-static int process_get_esync_fd( struct object *obj );
|
||||
+static int process_get_esync_fd( struct object *obj, enum esync_type *type );
|
||||
static void terminate_process( struct process *process, struct thread *skip, int exit_code );
|
||||
|
||||
static const struct object_ops process_ops =
|
||||
@@ -654,9 +654,10 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
@@ -656,9 +656,10 @@ static int process_signaled( struct object *obj, struct wait_queue_entry *entry
|
||||
return !process->running_threads;
|
||||
}
|
||||
|
||||
@@ -239,10 +239,10 @@ index 1ce2fb05c..6e6dfc41c 100644
|
||||
}
|
||||
|
||||
diff --git a/server/protocol.def b/server/protocol.def
|
||||
index 17959c233..8d2df1f97 100644
|
||||
index 7a383590c55..7644a25b8ec 100644
|
||||
--- a/server/protocol.def
|
||||
+++ b/server/protocol.def
|
||||
@@ -4012,4 +4012,14 @@ struct handle_info
|
||||
@@ -4011,4 +4011,14 @@ struct handle_info
|
||||
@REQ(get_esync_fd)
|
||||
obj_handle_t handle; /* handle to the object */
|
||||
@REPLY
|
||||
@@ -258,7 +258,7 @@ index 17959c233..8d2df1f97 100644
|
||||
+ ESYNC_QUEUE,
|
||||
+};
|
||||
diff --git a/server/queue.c b/server/queue.c
|
||||
index 0ea95291c..91de4a3a8 100644
|
||||
index 0ea95291c34..91de4a3a85f 100644
|
||||
--- a/server/queue.c
|
||||
+++ b/server/queue.c
|
||||
@@ -165,7 +165,7 @@ static void msg_queue_dump( struct object *obj, int verbose );
|
||||
@@ -283,7 +283,7 @@ index 0ea95291c..91de4a3a8 100644
|
||||
}
|
||||
|
||||
diff --git a/server/thread.c b/server/thread.c
|
||||
index 35bddeeaa..7c8ff1d5d 100644
|
||||
index 83781f0d712..ae2112486b2 100644
|
||||
--- a/server/thread.c
|
||||
+++ b/server/thread.c
|
||||
@@ -133,7 +133,7 @@ static const struct object_ops thread_apc_ops =
|
||||
@@ -308,5 +308,5 @@ index 35bddeeaa..7c8ff1d5d 100644
|
||||
}
|
||||
|
||||
--
|
||||
2.21.0
|
||||
2.20.1
|
||||
|
||||
|
@@ -2,7 +2,6 @@ Fixes: [36692] Many multi-threaded applications have poor performance due to hea
|
||||
# Note: the following dependencies are essentially artificial; in particular
|
||||
# these patches do not make use of the Staging shared memory infrastructure.
|
||||
Depends: server-Shared_Memory
|
||||
Depends: ntdll-NtSuspendProcess
|
||||
Depends: ntdll-SystemRoot_Symlink
|
||||
Depends: ws2_32-WSACleanup
|
||||
Depends: ntdll-RtlCreateUserThread
|
||||
|
Reference in New Issue
Block a user