Rebase against 7ca1c4900e42d608150822ef87a7ce2847a59b6f.

This commit is contained in:
Zebediah Figura 2019-12-05 22:31:23 -06:00
parent 3a14d63abf
commit cb9aa710d5
4 changed files with 49 additions and 55 deletions

View File

@ -1,8 +1,8 @@
From 2ca666409e42b5ecf78b32a583d3ba95cbcce356 Mon Sep 17 00:00:00 2001
From 31b8b93cd83da65ee4439f0f06fb673257f1850c Mon Sep 17 00:00:00 2001
From: Zebediah Figura <z.figura12@gmail.com>
Date: Sun, 10 Jun 2018 23:12:16 -0500
Subject: [PATCH 41/83] server: Allocate shared memory segments for semaphores
and mutexes.
Subject: [PATCH] server: Allocate shared memory segments for semaphores and
mutexes.
As has been described in the README, these two objects have state that can't
be expressed (or read from) the eventfd descriptor. Namely, for semaphores
@ -16,17 +16,17 @@ We use the WINEPREFIX dir to discriminate shm sections for simultaneously
running servers; this is based off of code in libwine (specifically
init_server_dir()).
---
server/esync.c | 65 +++++++++++++++++++++++++++++++++++++++++++++
server/esync.c | 64 +++++++++++++++++++++++++++++++++++++++++++++
server/esync.h | 1 +
server/main.c | 4 +++
server/protocol.def | 2 ++
4 files changed, 72 insertions(+)
4 files changed, 71 insertions(+)
diff --git a/server/esync.c b/server/esync.c
index 5dd38c42a..e9a1ec15e 100644
index 5dd38c42a..fb9d02fc7 100644
--- a/server/esync.c
+++ b/server/esync.c
@@ -21,17 +21,26 @@
@@ -21,12 +21,20 @@
#include "config.h"
#include "wine/port.h"
@ -47,13 +47,7 @@ index 5dd38c42a..e9a1ec15e 100644
#include "ntstatus.h"
#define WIN32_NO_STATUS
#include "windef.h"
#include "winternl.h"
+#include "wine/library.h"
#include "handle.h"
#include "request.h"
@@ -52,11 +61,46 @@ int do_esync(void)
@@ -52,11 +60,46 @@ int do_esync(void)
#endif
}
@ -72,8 +66,8 @@ index 5dd38c42a..e9a1ec15e 100644
+{
+ struct stat st;
+
+ if (stat( wine_get_config_dir(), &st ) == -1)
+ fatal_error( "cannot stat %s\n", wine_get_config_dir() );
+ if (fstat( config_dir_fd, &st ) == -1)
+ fatal_error( "cannot stat config dir\n" );
+
+ if (st.st_ino != (unsigned long)st.st_ino)
+ sprintf( shm_name, "/wine-%lx%08lx-esync", (unsigned long)((unsigned long long)st.st_ino >> 32), (unsigned long)st.st_ino );
@ -100,7 +94,7 @@ index 5dd38c42a..e9a1ec15e 100644
};
static void esync_dump( struct object *obj, int verbose );
@@ -146,6 +190,25 @@ static struct esync *create_esync( struct object *root, const struct unicode_str
@@ -146,6 +189,25 @@ static struct esync *create_esync( struct object *root, const struct unicode_str
return NULL;
}
esync->type = type;
@ -126,7 +120,7 @@ index 5dd38c42a..e9a1ec15e 100644
}
else
{
@@ -247,6 +310,7 @@ DECL_HANDLER(create_esync)
@@ -247,6 +309,7 @@ DECL_HANDLER(create_esync)
req->access, objattr->attributes );
reply->type = esync->type;
@ -134,7 +128,7 @@ index 5dd38c42a..e9a1ec15e 100644
send_client_fd( current->process, esync->fd, reply->handle );
release_object( esync );
}
@@ -278,6 +342,7 @@ DECL_HANDLER(open_esync)
@@ -278,6 +341,7 @@ DECL_HANDLER(open_esync)
}
reply->type = esync->type;
@ -155,7 +149,7 @@ index 2687c72e4..aeb58c546 100644
void esync_wake_up( struct object *obj );
void esync_clear( int fd );
diff --git a/server/main.c b/server/main.c
index 13af3b9fe..2a91f5ec8 100644
index 57463aecc..2f4b3411b 100644
--- a/server/main.c
+++ b/server/main.c
@@ -36,6 +36,7 @@
@ -163,10 +157,10 @@ index 13af3b9fe..2a91f5ec8 100644
#include "thread.h"
#include "request.h"
+#include "esync.h"
#include "wine/library.h"
/* command-line options */
@@ -142,6 +143,9 @@ int main( int argc, char *argv[] )
int debug_level = 0;
@@ -141,6 +142,9 @@ int main( int argc, char *argv[] )
sock_init();
open_master_socket();
@ -177,10 +171,10 @@ index 13af3b9fe..2a91f5ec8 100644
init_scheduler();
init_signals();
diff --git a/server/protocol.def b/server/protocol.def
index d14fdb607..c2b554490 100644
index f0dc0d24d..88a443de4 100644
--- a/server/protocol.def
+++ b/server/protocol.def
@@ -4052,6 +4052,7 @@ struct handle_info
@@ -4040,6 +4040,7 @@ struct handle_info
@REPLY
obj_handle_t handle; /* handle to the object */
int type; /* type of esync object (see below) */
@ -188,7 +182,7 @@ index d14fdb607..c2b554490 100644
@END
/* Open an esync object */
@@ -4064,6 +4065,7 @@ struct handle_info
@@ -4052,6 +4053,7 @@ struct handle_info
@REPLY
obj_handle_t handle; /* handle to the event */
int type; /* type of esync object (above) */
@ -197,5 +191,5 @@ index d14fdb607..c2b554490 100644
/* Retrieve the esync fd for an object. */
--
2.20.1
2.23.0

View File

@ -1,4 +1,4 @@
From fce0ca471688700deb77c63e53e1c921ad109a68 Mon Sep 17 00:00:00 2001
From e51af93f24d248e0f20fe0688c2dba4a6f3f9344 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Michael=20M=C3=BCller?= <michael@fds-team.de>
Date: Sat, 4 Feb 2017 16:20:37 +0100
Subject: [PATCH] kernel32: Implement some processor group functions.
@ -13,7 +13,7 @@ Subject: [PATCH] kernel32: Implement some processor group functions.
6 files changed, 49 insertions(+), 10 deletions(-)
diff --git a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec
index e653ac6d212..b6af37ab0aa 100644
index e653ac6d2..b6af37ab0 100644
--- a/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec
+++ b/dlls/api-ms-win-core-kernel32-legacy-l1-1-0/api-ms-win-core-kernel32-legacy-l1-1-0.spec
@@ -21,7 +21,7 @@
@ -26,7 +26,7 @@ index e653ac6d212..b6af37ab0aa 100644
@ stdcall GetNamedPipeServerProcessId(long ptr) kernel32.GetNamedPipeServerProcessId
@ stdcall GetShortPathNameA(str ptr long) kernel32.GetShortPathNameA
diff --git a/dlls/api-ms-win-core-kernel32-legacy-l1-1-1/api-ms-win-core-kernel32-legacy-l1-1-1.spec b/dlls/api-ms-win-core-kernel32-legacy-l1-1-1/api-ms-win-core-kernel32-legacy-l1-1-1.spec
index fd1a0bcf0ab..b281fd963da 100644
index fd1a0bcf0..b281fd963 100644
--- a/dlls/api-ms-win-core-kernel32-legacy-l1-1-1/api-ms-win-core-kernel32-legacy-l1-1-1.spec
+++ b/dlls/api-ms-win-core-kernel32-legacy-l1-1-1/api-ms-win-core-kernel32-legacy-l1-1-1.spec
@@ -26,7 +26,7 @@
@ -39,10 +39,10 @@ index fd1a0bcf0ab..b281fd963da 100644
@ stdcall GetNamedPipeServerProcessId(long ptr) kernel32.GetNamedPipeServerProcessId
@ stdcall GetNumaAvailableMemoryNodeEx(long ptr) kernel32.GetNumaAvailableMemoryNodeEx
diff --git a/dlls/kernel32/cpu.c b/dlls/kernel32/cpu.c
index ad8ebeb873a..1014dfe3c83 100644
index 0849ac551..f0b06dcc1 100644
--- a/dlls/kernel32/cpu.c
+++ b/dlls/kernel32/cpu.c
@@ -231,7 +231,9 @@ SIZE_T WINAPI GetLargePageMinimum(void)
@@ -122,7 +122,9 @@ err:
*/
WORD WINAPI GetActiveProcessorGroupCount(void)
{
@ -53,7 +53,7 @@ index ad8ebeb873a..1014dfe3c83 100644
return 1;
}
@@ -240,14 +242,26 @@ WORD WINAPI GetActiveProcessorGroupCount(void)
@@ -131,14 +133,26 @@ WORD WINAPI GetActiveProcessorGroupCount(void)
*/
DWORD WINAPI GetActiveProcessorCount(WORD group)
{
@ -87,7 +87,7 @@ index ad8ebeb873a..1014dfe3c83 100644
/***********************************************************************
diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index d4ba5c71c13..c896469bde5 100644
index 04fa5f2e7..44681ebb3 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -717,7 +717,7 @@
@ -100,10 +100,10 @@ index d4ba5c71c13..c896469bde5 100644
@ stdcall -import GetModuleFileNameW(long ptr long)
@ stdcall -import GetModuleHandleA(str)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c
index 973c1a919bb..b5ff2c69869 100644
index a3118d11b..520c2b09f 100644
--- a/dlls/kernel32/tests/process.c
+++ b/dlls/kernel32/tests/process.c
@@ -91,6 +91,7 @@ static SIZE_T (WINAPI *pGetLargePageMinimum)(void);
@@ -92,6 +92,7 @@ static SIZE_T (WINAPI *pGetLargePageMinimum)(void);
static BOOL (WINAPI *pInitializeProcThreadAttributeList)(struct _PROC_THREAD_ATTRIBUTE_LIST*, DWORD, DWORD, SIZE_T*);
static BOOL (WINAPI *pUpdateProcThreadAttribute)(struct _PROC_THREAD_ATTRIBUTE_LIST*, DWORD, DWORD_PTR, void *,SIZE_T,void*,SIZE_T*);
static void (WINAPI *pDeleteProcThreadAttributeList)(struct _PROC_THREAD_ATTRIBUTE_LIST*);
@ -111,7 +111,7 @@ index 973c1a919bb..b5ff2c69869 100644
/* ############################### */
static char base[MAX_PATH];
@@ -258,6 +259,7 @@ static BOOL init(void)
@@ -259,6 +260,7 @@ static BOOL init(void)
pInitializeProcThreadAttributeList = (void *)GetProcAddress(hkernel32, "InitializeProcThreadAttributeList");
pUpdateProcThreadAttribute = (void *)GetProcAddress(hkernel32, "UpdateProcThreadAttribute");
pDeleteProcThreadAttributeList = (void *)GetProcAddress(hkernel32, "DeleteProcThreadAttributeList");
@ -119,8 +119,8 @@ index 973c1a919bb..b5ff2c69869 100644
return TRUE;
}
@@ -3908,6 +3910,26 @@ static void test_ProcThreadAttributeList(void)
pDeleteProcThreadAttributeList(&list);
@@ -3923,6 +3925,26 @@ void test_parent_process_attribute(unsigned int level, HANDLE read_pipe)
}
}
+static void test_GetActiveProcessorCount(void)
@ -146,7 +146,7 @@ index 973c1a919bb..b5ff2c69869 100644
START_TEST(process)
{
HANDLE job;
@@ -3992,6 +4014,7 @@ START_TEST(process)
@@ -4013,6 +4035,7 @@ START_TEST(process)
test_GetNumaProcessorNode();
test_session_info();
test_GetLogicalProcessorInformationEx();
@ -155,10 +155,10 @@ index 973c1a919bb..b5ff2c69869 100644
test_ProcThreadAttributeList();
test_SuspendProcessState();
diff --git a/include/winnt.h b/include/winnt.h
index c8d4a9593ce..d4c29465862 100644
index d18b2e03b..86f30ade4 100644
--- a/include/winnt.h
+++ b/include/winnt.h
@@ -6454,6 +6454,8 @@ typedef struct _GROUP_AFFINITY
@@ -6459,6 +6459,8 @@ typedef struct _GROUP_AFFINITY
WORD Reserved[3];
} GROUP_AFFINITY, *PGROUP_AFFINITY;

View File

@ -52,7 +52,7 @@ usage()
# Get the upstream commit sha
upstream_commit()
{
echo "67d1321c2b8eb5d54aa8fbe0807d9052ae56c1ed"
echo "7ca1c4900e42d608150822ef87a7ce2847a59b6f"
}
# Show version information

View File

@ -1,18 +1,18 @@
From 7d0a3a7800a523d111df2d40da43ee7bb4ab362b Mon Sep 17 00:00:00 2001
From 65522961f3a0cc382bf2effc445228815ee06e58 Mon Sep 17 00:00:00 2001
From: Sebastian Lackner <sebastian@fds-team.de>
Date: Fri, 13 Nov 2015 22:39:00 +0100
Subject: server: Allow multiple registry notifications for the same key.
---
dlls/ntdll/tests/reg.c | 6 +++---
server/registry.c | 53 ++++++++++++++++++++++++++------------------------
dlls/ntdll/tests/reg.c | 6 ++---
server/registry.c | 53 ++++++++++++++++++++++--------------------
2 files changed, 31 insertions(+), 28 deletions(-)
diff --git a/dlls/ntdll/tests/reg.c b/dlls/ntdll/tests/reg.c
index 0160869..e67b2b4 100644
index 9bb8d2502..1ba688084 100644
--- a/dlls/ntdll/tests/reg.c
+++ b/dlls/ntdll/tests/reg.c
@@ -1785,7 +1785,7 @@ static void test_notify(void)
@@ -1874,7 +1874,7 @@ static void test_notify(void)
pRtlFreeUnicodeString(&str);
status = pNtWaitForSingleObject(events[0], FALSE, &timeout);
@ -21,7 +21,7 @@ index 0160869..e67b2b4 100644
status = pNtWaitForSingleObject(events[1], FALSE, &timeout);
ok(status == STATUS_SUCCESS, "NtWaitForSingleObject returned %x\n", status);
@@ -1798,7 +1798,7 @@ static void test_notify(void)
@@ -1887,7 +1887,7 @@ static void test_notify(void)
ok(status == STATUS_SUCCESS, "NtDeleteSubkey failed: %x\n", status);
status = pNtWaitForSingleObject(events[0], FALSE, &timeout);
@ -30,7 +30,7 @@ index 0160869..e67b2b4 100644
status = pNtWaitForSingleObject(events[1], FALSE, &timeout);
ok(status == STATUS_SUCCESS, "NtWaitForSingleObject returned %x\n", status);
@@ -1812,7 +1812,7 @@ static void test_notify(void)
@@ -1901,7 +1901,7 @@ static void test_notify(void)
pNtClose(key);
status = pNtWaitForSingleObject(events[0], FALSE, &timeout);
@ -40,12 +40,12 @@ index 0160869..e67b2b4 100644
ok(status == STATUS_SUCCESS, "NtWaitForSingleObject returned %x\n", status);
diff --git a/server/registry.c b/server/registry.c
index 97b16ed..53a8d43 100644
index 964e2ebd5..41af3cbe7 100644
--- a/server/registry.c
+++ b/server/registry.c
@@ -50,10 +50,16 @@
@@ -49,10 +49,16 @@
#include "winternl.h"
#include "wine/library.h"
+struct notify_event
+{
@ -83,7 +83,7 @@ index 97b16ed..53a8d43 100644
if (del)
{
list_remove( &notify->entry );
@@ -2263,6 +2274,7 @@ DECL_HANDLER(set_registry_notification)
@@ -2277,6 +2288,7 @@ DECL_HANDLER(set_registry_notification)
struct key *key;
struct event *event;
struct notify *notify;
@ -91,7 +91,7 @@ index 97b16ed..53a8d43 100644
key = get_hkey_obj( req->hkey, KEY_NOTIFY );
if (key)
@@ -2271,29 +2283,20 @@ DECL_HANDLER(set_registry_notification)
@@ -2285,29 +2297,20 @@ DECL_HANDLER(set_registry_notification)
if (event)
{
notify = find_notify( key, current->process, req->hkey );
@ -133,5 +133,5 @@ index 97b16ed..53a8d43 100644
set_error( STATUS_PENDING );
}
--
2.8.0
2.23.0