[PATCH 0/1] MR4899: msvcr100: Add stub _ReaderWriterLock class.
From: Vijay Kiran Kamuju <infyquest(a)gmail.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46074 --- dlls/concrt140/concrt140.spec | 6 +++--- dlls/msvcr100/msvcr100.spec | 4 ++-- dlls/msvcr110/msvcr110.spec | 6 +++--- dlls/msvcr120/msvcr120.spec | 6 +++--- dlls/msvcr120_app/msvcr120_app.spec | 6 +++--- dlls/msvcrt/concurrency.c | 19 +++++++++++++++++++ 6 files changed, 33 insertions(+), 14 deletions(-) diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec index f3a39a30599..54b2fb7fc01 100644 --- a/dlls/concrt140/concrt140.spec +++ b/dlls/concrt140/concrt140.spec @@ -33,9 +33,9 @@ @ cdecl -arch=arm ??0_NonReentrantPPLLock(a)details@Concurrency@@QAA(a)XZ(ptr) _NonReentrantPPLLock_ctor @ thiscall -arch=i386 ??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ(ptr) _NonReentrantPPLLock_ctor @ cdecl -arch=win64 ??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _NonReentrantPPLLock_ctor -@ stub -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReaderWriterLock_ctor +@ thiscall -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReaderWriterLock_ctor +@ cdecl -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReaderWriterLock_ctor @ cdecl -arch=arm ??0_ReentrantBlockingLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReentrantBlockingLock_ctor @ thiscall -arch=i386 ??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReentrantBlockingLock_ctor @ cdecl -arch=win64 ??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReentrantBlockingLock_ctor diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index 79a201f4c17..532e90b170b 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -14,8 +14,8 @@ @ cdecl -arch=win64 ??0_NonReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReentrantBlockingLock_ctor @ thiscall -arch=win32 ??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ(ptr) _NonReentrantPPLLock_ctor @ cdecl -arch=win64 ??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _NonReentrantPPLLock_ctor -@ stub -arch=win32 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ +@ thiscall -arch=win32 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReaderWriterLock_ctor +@ cdecl -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReaderWriterLock_ctor @ thiscall -arch=win32 ??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReentrantBlockingLock_ctor @ cdecl -arch=win64 ??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReentrantBlockingLock_ctor @ stub -arch=win32 ??0_ReentrantLock(a)details@Concurrency@@QAE(a)XZ diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index 15ceae906c1..a95c32e6d6a 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -38,9 +38,9 @@ @ cdecl -arch=arm ??0_NonReentrantPPLLock(a)details@Concurrency@@QAA(a)XZ(ptr) _NonReentrantPPLLock_ctor @ thiscall -arch=i386 ??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ(ptr) _NonReentrantPPLLock_ctor @ cdecl -arch=win64 ??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _NonReentrantPPLLock_ctor -@ stub -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReaderWriterLock_ctor +@ thiscall -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReaderWriterLock_ctor +@ cdecl -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReaderWriterLock_ctor @ cdecl -arch=arm ??0_ReentrantBlockingLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReentrantBlockingLock_ctor @ thiscall -arch=i386 ??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReentrantBlockingLock_ctor @ cdecl -arch=win64 ??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReentrantBlockingLock_ctor diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 2d6798a0af2..35895d7a9e8 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -35,9 +35,9 @@ @ cdecl -arch=arm ??0_NonReentrantPPLLock(a)details@Concurrency@@QAA(a)XZ(ptr) _NonReentrantPPLLock_ctor @ thiscall -arch=i386 ??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ(ptr) _NonReentrantPPLLock_ctor @ cdecl -arch=win64 ??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _NonReentrantPPLLock_ctor -@ stub -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReaderWriterLock_ctor +@ thiscall -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReaderWriterLock_ctor +@ cdecl -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReaderWriterLock_ctor @ cdecl -arch=arm ??0_ReentrantBlockingLock(a)details@Concurrency@@QAA(a)XZ(ptr) _ReentrantBlockingLock_ctor @ thiscall -arch=i386 ??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ(ptr) _ReentrantBlockingLock_ctor @ cdecl -arch=win64 ??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) _ReentrantBlockingLock_ctor diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index 02a28330b54..c987939c381 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -33,9 +33,9 @@ @ cdecl -arch=arm ??0_NonReentrantPPLLock(a)details@Concurrency@@QAA(a)XZ(ptr) msvcr120.??0_NonReentrantPPLLock(a)details@Concurrency@@QAA(a)XZ @ thiscall -arch=i386 ??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ(ptr) msvcr120.??0_NonReentrantPPLLock(a)details@Concurrency@@QAE(a)XZ @ cdecl -arch=win64 ??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0_NonReentrantPPLLock(a)details@Concurrency@@QEAA(a)XZ -@ stub -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ -@ stub -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ -@ stub -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ +@ cdecl -arch=arm ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ(ptr) msvcr120.??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ +@ thiscall -arch=i386 ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ(ptr) msvcr120.??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ +@ cdecl -arch=win64 ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ @ cdecl -arch=arm ??0_ReentrantBlockingLock(a)details@Concurrency@@QAA(a)XZ(ptr) msvcr120.??0_ReentrantBlockingLock(a)details@Concurrency@@QAA(a)XZ @ thiscall -arch=i386 ??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ(ptr) msvcr120.??0_ReentrantBlockingLock(a)details@Concurrency@@QAE(a)XZ @ cdecl -arch=win64 ??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ(ptr) msvcr120.??0_ReentrantBlockingLock(a)details@Concurrency@@QEAA(a)XZ diff --git a/dlls/msvcrt/concurrency.c b/dlls/msvcrt/concurrency.c index 68091c21e60..a9879879301 100644 --- a/dlls/msvcrt/concurrency.c +++ b/dlls/msvcrt/concurrency.c @@ -295,6 +295,12 @@ typedef struct } wait; } _ReentrantPPLLock__Scoped_lock; +typedef struct +{ + LONG state; + LONG count; +} _ReaderWriterLock; + #define EVT_RUNNING (void*)1 #define EVT_WAITING NULL @@ -3562,6 +3568,19 @@ bool __thiscall _ReentrantBlockingLock__TryAcquire(_ReentrantBlockingLock *this) return TryEnterCriticalSection(&this->cs); } +/* ??0_ReaderWriterLock(a)details@Concurrency@@QAA(a)XZ */ +/* ??0_ReaderWriterLock(a)details@Concurrency@@QAE(a)XZ */ +/* ??0_ReaderWriterLock(a)details@Concurrency@@QEAA(a)XZ */ +DEFINE_THISCALL_WRAPPER(_ReaderWriterLock_ctor, 4) +_ReaderWriterLock* __thiscall _ReaderWriterLock_ctor(_ReaderWriterLock *this) +{ + TRACE("(%p)\n", this); + + this->state = 0; + this->count = 0; + return this; +} + /* ?wait(a)Concurrency@@YAXI(a)Z */ void __cdecl Concurrency_wait(unsigned int time) { -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/4899
The patch looks good for me. Please update the commit message to something like: msvcr100: Add _ReaderWriterLock constructor implementation. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4899#note_58376
participants (3)
-
Piotr Caban (@piotr) -
Vijay Kiran Kamuju -
Vijay Kiran Kamuju (@infyquest)