msvcp100: Add stdext::threads::_Mtx_* implementation.
Signed-off-by: Piotr Caban <piotr@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
988cf549fc
commit
a941841556
|
@ -1126,14 +1126,14 @@
|
|||
@ cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
|
||||
@ cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ stub -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win32 ?_Mutex_Lock@_Mutex@std@@CAXPAV12@@Z(ptr) mutex_mutex_lock
|
||||
@ cdecl -arch=win64 ?_Mutex_Lock@_Mutex@std@@CAXPEAV12@@Z(ptr) mutex_mutex_lock
|
||||
@ cdecl -arch=win32 ?_Mutex_Unlock@_Mutex@std@@CAXPAV12@@Z(ptr) mutex_mutex_unlock
|
||||
|
|
|
@ -1629,14 +1629,14 @@
|
|||
@ cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
|
||||
@ cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ stub -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@ABV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
@ cdecl -arch=win64 ?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@_N@Z(long) locale__Locimp__New_Locimp_transparent
|
||||
|
|
|
@ -1590,14 +1590,14 @@
|
|||
@ cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
|
||||
@ cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ stub -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@ABV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
@ cdecl -arch=win64 ?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@_N@Z(long) locale__Locimp__New_Locimp_transparent
|
||||
|
|
|
@ -279,6 +279,11 @@ static _Pad* (__thiscall *p__Pad_op_assign)(_Pad*, const _Pad*);
|
|||
static void (__thiscall *p__Pad__Launch)(_Pad*, _Thrd_t*);
|
||||
static void (__thiscall *p__Pad__Release)(_Pad*);
|
||||
|
||||
static void (__cdecl *p_threads__Mtx_new)(void **mtx);
|
||||
static void (__cdecl *p_threads__Mtx_delete)(void *mtx);
|
||||
static void (__cdecl *p_threads__Mtx_lock)(void *mtx);
|
||||
static void (__cdecl *p_threads__Mtx_unlock)(void *mtx);
|
||||
|
||||
static BOOLEAN (WINAPI *pCreateSymbolicLinkA)(LPCSTR,LPCSTR,DWORD);
|
||||
|
||||
static HMODULE msvcp;
|
||||
|
@ -388,6 +393,14 @@ static BOOL init(void)
|
|||
"?_Launch@_Pad@std@@QEAAXPEAU_Thrd_imp_t@@@Z");
|
||||
SET(p__Pad__Release,
|
||||
"?_Release@_Pad@std@@QEAAXXZ");
|
||||
SET(p_threads__Mtx_new,
|
||||
"?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z");
|
||||
SET(p_threads__Mtx_delete,
|
||||
"?_Mtx_delete@threads@stdext@@YAXPEAX@Z");
|
||||
SET(p_threads__Mtx_lock,
|
||||
"?_Mtx_lock@threads@stdext@@YAXPEAX@Z");
|
||||
SET(p_threads__Mtx_unlock,
|
||||
"?_Mtx_unlock@threads@stdext@@YAXPEAX@Z");
|
||||
} else {
|
||||
SET(p_tr2_sys__File_size,
|
||||
"?_File_size@sys@tr2@std@@YA_KPBD@Z");
|
||||
|
@ -449,6 +462,14 @@ static BOOL init(void)
|
|||
"?_Symlink@sys@tr2@std@@YAHPBD0@Z");
|
||||
SET(p_tr2_sys__Unlink,
|
||||
"?_Unlink@sys@tr2@std@@YAHPBD@Z");
|
||||
SET(p_threads__Mtx_new,
|
||||
"?_Mtx_new@threads@stdext@@YAXAAPAX@Z");
|
||||
SET(p_threads__Mtx_delete,
|
||||
"?_Mtx_delete@threads@stdext@@YAXPAX@Z");
|
||||
SET(p_threads__Mtx_lock,
|
||||
"?_Mtx_lock@threads@stdext@@YAXPAX@Z");
|
||||
SET(p_threads__Mtx_unlock,
|
||||
"?_Mtx_unlock@threads@stdext@@YAXPAX@Z");
|
||||
#ifdef __i386__
|
||||
SET(p_i386_Thrd_current,
|
||||
"_Thrd_current");
|
||||
|
@ -2065,6 +2086,22 @@ static void test__Pad(void)
|
|||
CloseHandle(_Pad__Launch_returned);
|
||||
}
|
||||
|
||||
static void test_threads__Mtx(void)
|
||||
{
|
||||
void *mtx = NULL;
|
||||
|
||||
p_threads__Mtx_new(&mtx);
|
||||
ok(mtx != NULL, "mtx == NULL\n");
|
||||
|
||||
p_threads__Mtx_lock(mtx);
|
||||
p_threads__Mtx_lock(mtx);
|
||||
p_threads__Mtx_unlock(mtx);
|
||||
p_threads__Mtx_unlock(mtx);
|
||||
p_threads__Mtx_unlock(mtx);
|
||||
|
||||
p_threads__Mtx_delete(mtx);
|
||||
}
|
||||
|
||||
START_TEST(msvcp120)
|
||||
{
|
||||
if(!init()) return;
|
||||
|
@ -2096,6 +2133,7 @@ START_TEST(msvcp120)
|
|||
test_thrd();
|
||||
test_cnd();
|
||||
test__Pad();
|
||||
test_threads__Mtx();
|
||||
|
||||
test_vbtable_size_exports();
|
||||
|
||||
|
|
|
@ -1590,14 +1590,14 @@
|
|||
@ cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) msvcp120.?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z
|
||||
@ cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) msvcp120.?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z
|
||||
@ cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) msvcp120.?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z
|
||||
@ stub -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z(ptr) msvcp120.?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ cdecl -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z(ptr) msvcp120.?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z(ptr) msvcp120.?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ cdecl -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z(ptr) msvcp120.?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z(ptr) msvcp120.?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ cdecl -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z(ptr) msvcp120.?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z(ptr) msvcp120.?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ cdecl -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z(ptr) msvcp120.?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@ABV123@@Z(ptr) msvcp120.?_New_Locimp@_Locimp@locale@std@@CAPAV123@ABV123@@Z
|
||||
@ cdecl -arch=win64 ?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z(ptr) msvcp120.?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@_N@Z(long) msvcp120.?_New_Locimp@_Locimp@locale@std@@CAPAV123@_N@Z
|
||||
|
|
|
@ -1509,14 +1509,14 @@
|
|||
@ cdecl -arch=win64 ?_Makewloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makewloc
|
||||
@ cdecl -arch=win32 ?_Makexloc@_Locimp@locale@std@@CAXABV_Locinfo@3@HPAV123@PBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ cdecl -arch=win64 ?_Makexloc@_Locimp@locale@std@@CAXAEBV_Locinfo@3@HPEAV123@PEBV23@@Z(ptr long ptr ptr) locale__Locimp__Makexloc
|
||||
@ stub -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z
|
||||
@ stub -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z
|
||||
@ stub -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z
|
||||
@ cdecl -arch=win32 ?_Mtx_delete@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win64 ?_Mtx_delete@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_delete
|
||||
@ cdecl -arch=win32 ?_Mtx_lock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win64 ?_Mtx_lock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_lock
|
||||
@ cdecl -arch=win32 ?_Mtx_new@threads@stdext@@YAXAAPAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win64 ?_Mtx_new@threads@stdext@@YAXAEAPEAX@Z(ptr) threads__Mtx_new
|
||||
@ cdecl -arch=win32 ?_Mtx_unlock@threads@stdext@@YAXPAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win64 ?_Mtx_unlock@threads@stdext@@YAXPEAX@Z(ptr) threads__Mtx_unlock
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@ABV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
@ cdecl -arch=win32 ?_New_Locimp@_Locimp@locale@std@@CAPAV123@_N@Z(long) locale__Locimp__New_Locimp_transparent
|
||||
@ cdecl -arch=win64 ?_New_Locimp@_Locimp@locale@std@@CAPEAV123@AEBV123@@Z(ptr) locale__Locimp__New_Locimp
|
||||
|
|
|
@ -1318,3 +1318,24 @@ LONGLONG __cdecl _Query_perf_frequency(void)
|
|||
return li.QuadPart;
|
||||
}
|
||||
#endif
|
||||
|
||||
void __cdecl threads__Mtx_new(void **mtx)
|
||||
{
|
||||
*mtx = MSVCRT_operator_new(sizeof(CRITICAL_SECTION));
|
||||
InitializeCriticalSection(*mtx);
|
||||
}
|
||||
|
||||
void __cdecl threads__Mtx_delete(void *mtx)
|
||||
{
|
||||
DeleteCriticalSection(mtx);
|
||||
}
|
||||
|
||||
void __cdecl threads__Mtx_lock(void *mtx)
|
||||
{
|
||||
EnterCriticalSection(mtx);
|
||||
}
|
||||
|
||||
void __cdecl threads__Mtx_unlock(void *mtx)
|
||||
{
|
||||
LeaveCriticalSection(mtx);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue