diff --git a/patches/eventfd_synchronization/0041-server-Allocate-shared-memory-segments-for-semaphore.patch b/patches/eventfd_synchronization/0041-server-Allocate-shared-memory-segments-for-semaphore.patch index 596b8f5a..8ed4fdb3 100644 --- a/patches/eventfd_synchronization/0041-server-Allocate-shared-memory-segments-for-semaphore.patch +++ b/patches/eventfd_synchronization/0041-server-Allocate-shared-memory-segments-for-semaphore.patch @@ -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 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 diff --git a/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch b/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch index 2ad7d770..21542bc3 100644 --- a/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch +++ b/patches/kernel32-Processor_Group/0001-kernel32-Implement-some-processor-group-functions.patch @@ -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?= 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; diff --git a/patches/patchinstall.sh b/patches/patchinstall.sh index 9b295fa1..098cc33a 100755 --- a/patches/patchinstall.sh +++ b/patches/patchinstall.sh @@ -52,7 +52,7 @@ usage() # Get the upstream commit sha upstream_commit() { - echo "67d1321c2b8eb5d54aa8fbe0807d9052ae56c1ed" + echo "7ca1c4900e42d608150822ef87a7ce2847a59b6f" } # Show version information diff --git a/patches/server-Registry_Notifications/0001-server-Allow-multiple-registry-notifications-for-the.patch b/patches/server-Registry_Notifications/0001-server-Allow-multiple-registry-notifications-for-the.patch index 31b21823..562a159b 100644 --- a/patches/server-Registry_Notifications/0001-server-Allow-multiple-registry-notifications-for-the.patch +++ b/patches/server-Registry_Notifications/0001-server-Allow-multiple-registry-notifications-for-the.patch @@ -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 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( ¬ify->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