From ff095e2de46f17d0abbe0b2d194233c441fdd023 Mon Sep 17 00:00:00 2001 From: Daniel Lehman Date: Mon, 12 Dec 2016 13:21:47 -0800 Subject: [PATCH 1/3] msvcrt: Add Concurrency::event stubs Signed-off-by: Daniel Lehman --- dlls/concrt140/concrt140.spec | 24 +++++++-------- dlls/msvcr100/msvcr100.spec | 24 +++++++-------- dlls/msvcr110/msvcr110.spec | 34 +++++++++++----------- dlls/msvcr120/msvcr120.spec | 34 +++++++++++----------- dlls/msvcr120_app/msvcr120_app.spec | 34 +++++++++++----------- dlls/msvcrt/lock.c | 58 +++++++++++++++++++++++++++++++++++++ include/concrt.h | 25 ++++++++++++++++ 7 files changed, 158 insertions(+), 75 deletions(-) create mode 100644 include/concrt.h diff --git a/dlls/concrt140/concrt140.spec b/dlls/concrt140/concrt140.spec index 4786768..4d9060d 100644 --- a/dlls/concrt140/concrt140.spec +++ b/dlls/concrt140/concrt140.spec @@ -74,8 +74,8 @@ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@PEBD@Z @ stub -arch=i386 ??0default_scheduler_exists@Concurrency@@QAE@XZ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@XZ -@ stub -arch=i386 ??0event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??0event@Concurrency@@QEAA@XZ +@ thiscall -arch=i386 ??0event@Concurrency@@QAE@XZ(ptr) msvcr120.??0event@Concurrency@@QAE@XZ +@ cdecl -arch=win64 ??0event@Concurrency@@QEAA@XZ(ptr) msvcr120.??0event@Concurrency@@QEAA@XZ @ stub -arch=i386 ??0improper_lock@Concurrency@@QAE@PBD@Z @ stub -arch=win64 ??0improper_lock@Concurrency@@QEAA@PEBD@Z @ stub -arch=i386 ??0improper_lock@Concurrency@@QAE@XZ @@ -188,8 +188,8 @@ @ stub -arch=win64 ??1agent@Concurrency@@UEAA@XZ @ thiscall -arch=i386 ??1critical_section@Concurrency@@QAE@XZ(ptr) msvcr120.??1critical_section@Concurrency@@QAE@XZ @ cdecl -arch=win64 ??1critical_section@Concurrency@@QEAA@XZ(ptr) msvcr120.??1critical_section@Concurrency@@QEAA@XZ -@ stub -arch=i386 ??1event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??1event@Concurrency@@QEAA@XZ +@ thiscall -arch=i386 ??1event@Concurrency@@QAE@XZ(ptr) msvcr120.??1event@Concurrency@@QAE@XZ +@ cdecl -arch=win64 ??1event@Concurrency@@QEAA@XZ(ptr) msvcr120.??1event@Concurrency@@QEAA@XZ @ thiscall -arch=win32 ??1reader_writer_lock@Concurrency@@QAE@XZ(ptr) msvcr120.??1reader_writer_lock@Concurrency@@QAE@XZ @ cdecl -arch=win64 ??1reader_writer_lock@Concurrency@@QEAA@XZ(ptr) msvcr120.??1reader_writer_lock@Concurrency@@QEAA@XZ @ thiscall -arch=i386 ??1scoped_lock@critical_section@Concurrency@@QAE@XZ(ptr) msvcr120.??1scoped_lock@critical_section@Concurrency@@QAE@XZ @@ -490,10 +490,10 @@ @ cdecl -arch=win64 ?notify_all@_Condition_variable@details@Concurrency@@QEAAXXZ(ptr) msvcr120.?notify_all@_Condition_variable@details@Concurrency@@QEAAXXZ @ thiscall -arch=i386 ?notify_one@_Condition_variable@details@Concurrency@@QAEXXZ(ptr) msvcr120.?notify_one@_Condition_variable@details@Concurrency@@QAEXXZ @ cdecl -arch=win64 ?notify_one@_Condition_variable@details@Concurrency@@QEAAXXZ(ptr) msvcr120.?notify_one@_Condition_variable@details@Concurrency@@QEAAXXZ -@ stub -arch=i386 ?reset@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?reset@event@Concurrency@@QEAAXXZ -@ stub -arch=i386 ?set@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?set@event@Concurrency@@QEAAXXZ +@ thiscall -arch=i386 ?reset@event@Concurrency@@QAEXXZ(ptr) msvcr120.?reset@event@Concurrency@@QAEXXZ +@ cdecl -arch=win64 ?reset@event@Concurrency@@QEAAXXZ(ptr) msvcr120.?reset@event@Concurrency@@QEAAXXZ +@ thiscall -arch=i386 ?set@event@Concurrency@@QAEXXZ(ptr) msvcr120.?set@event@Concurrency@@QAEXXZ +@ cdecl -arch=win64 ?set@event@Concurrency@@QEAAXXZ(ptr) msvcr120.?set@event@Concurrency@@QEAAXXZ @ stub -arch=win32 ?set_task_execution_resources@Concurrency@@YAXGPAU_GROUP_AFFINITY@@@Z @ stub -arch=win64 ?set_task_execution_resources@Concurrency@@YAXGPEAU_GROUP_AFFINITY@@@Z @ stub -arch=win32 ?set_task_execution_resources@Concurrency@@YAXK@Z @@ -521,13 +521,13 @@ @ cdecl -arch=win64 ?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z(ptr ptr) msvcr120.?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z @ stub -arch=win32 ?wait@agent@Concurrency@@SA?AW4agent_status@2@PAV12@I@Z @ stub -arch=win64 ?wait@agent@Concurrency@@SA?AW4agent_status@2@PEAV12@I@Z -@ stub -arch=i386 ?wait@event@Concurrency@@QAEII@Z -@ stub -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z +@ thiscall -arch=i386 ?wait@event@Concurrency@@QAEII@Z(ptr) msvcr120.?wait@event@Concurrency@@QAEII@Z +@ cdecl -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z(ptr) msvcr120.?wait@event@Concurrency@@QEAA_KI@Z @ thiscall -arch=i386 ?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z(ptr ptr long) msvcr120.?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z @ cdecl -arch=win64 ?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z(ptr ptr long) msvcr120.?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z @ stub -arch=win32 ?wait_for_all@agent@Concurrency@@SAXIPAPAV12@PAW4agent_status@2@I@Z @ stub -arch=win64 ?wait_for_all@agent@Concurrency@@SAX_KPEAPEAV12@PEAW4agent_status@2@I@Z -@ stub -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z -@ stub -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z +@ cdecl -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z(ptr long long long) msvcr120.?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z +@ cdecl -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z(ptr long long long) msvcr120.?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z @ stub -arch=win32 ?wait_for_one@agent@Concurrency@@SAXIPAPAV12@AAW4agent_status@2@AAII@Z @ stub -arch=win64 ?wait_for_one@agent@Concurrency@@SAX_KPEAPEAV12@AEAW4agent_status@2@AEA_KI@Z diff --git a/dlls/msvcr100/msvcr100.spec b/dlls/msvcr100/msvcr100.spec index b636c48..3ce9adb 100644 --- a/dlls/msvcr100/msvcr100.spec +++ b/dlls/msvcr100/msvcr100.spec @@ -64,8 +64,8 @@ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@PEBD@Z @ stub -arch=win32 ??0default_scheduler_exists@Concurrency@@QAE@XZ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@XZ -@ stub -arch=win32 ??0event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??0event@Concurrency@@QEAA@XZ +@ thiscall -arch=win32 ??0event@Concurrency@@QAE@XZ(ptr) event_ctor +@ cdecl -arch=win64 ??0event@Concurrency@@QEAA@XZ(ptr) event_ctor @ thiscall -arch=i386 ??0exception@std@@QAE@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor @ cdecl -arch=win64 ??0exception@std@@QEAA@AEBQEBD@Z(ptr ptr) MSVCRT_exception_ctor @ thiscall -arch=i386 ??0exception@std@@QAE@ABQBDH@Z(ptr ptr long) MSVCRT_exception_ctor_noalloc @@ -182,8 +182,8 @@ @ cdecl -arch=win64 ??1bad_typeid@std@@UEAA@XZ(ptr) MSVCRT_bad_typeid_dtor @ thiscall -arch=win32 ??1critical_section@Concurrency@@QAE@XZ(ptr) critical_section_dtor @ cdecl -arch=win64 ??1critical_section@Concurrency@@QEAA@XZ(ptr) critical_section_dtor -@ stub -arch=win32 ??1event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??1event@Concurrency@@QEAA@XZ +@ thiscall -arch=win32 ??1event@Concurrency@@QAE@XZ(ptr) event_dtor +@ cdecl -arch=win64 ??1event@Concurrency@@QEAA@XZ(ptr) event_dtor @ thiscall -arch=i386 ??1exception@std@@UAE@XZ(ptr) MSVCRT_exception_dtor @ cdecl -arch=win64 ??1exception@std@@UEAA@XZ(ptr) MSVCRT_exception_dtor @ thiscall -arch=win32 ??1reader_writer_lock@Concurrency@@QAE@XZ(ptr) reader_writer_lock_dtor @@ -472,10 +472,10 @@ @ cdecl -arch=arm ?raw_name@type_info@@QBAPBDXZ(ptr) MSVCRT_type_info_raw_name @ thiscall -arch=i386 ?raw_name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_raw_name @ cdecl -arch=win64 ?raw_name@type_info@@QEBAPEBDXZ(ptr) MSVCRT_type_info_raw_name -@ stub -arch=win32 ?reset@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?reset@event@Concurrency@@QEAAXXZ -@ stub -arch=win32 ?set@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?set@event@Concurrency@@QEAAXXZ +@ thiscall -arch=win32 ?reset@event@Concurrency@@QAEXXZ(ptr) event_reset +@ cdecl -arch=win64 ?reset@event@Concurrency@@QEAAXXZ(ptr) event_reset +@ thiscall -arch=win32 ?set@event@Concurrency@@QAEXXZ(ptr) event_set +@ cdecl -arch=win64 ?set@event@Concurrency@@QEAAXXZ(ptr) event_set @ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_new_handler @ stub ?set_terminate@@YAP6AXXZH@Z @ cdecl ?set_terminate@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_terminate @@ -497,10 +497,10 @@ @ cdecl -arch=win64 ?unlock@reader_writer_lock@Concurrency@@QEAAXXZ(ptr) reader_writer_lock_unlock @ cdecl ?vswprintf@@YAHPA_WIPB_WPAD@Z(ptr long wstr ptr) MSVCRT_vsnwprintf @ stub ?wait@Concurrency@@YAXI@Z -@ stub -arch=win32 ?wait@event@Concurrency@@QAEII@Z -@ stub -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z -@ stub -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z -@ stub -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z +@ thiscall -arch=win32 ?wait@event@Concurrency@@QAEII@Z(ptr) event_wait +@ cdecl -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z(ptr) event_wait +@ cdecl -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z(ptr long long long) event_wait_for_multiple +@ cdecl -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z(ptr long long long) event_wait_for_multiple @ thiscall -arch=i386 ?what@exception@std@@UBEPBDXZ(ptr) MSVCRT_what_exception @ cdecl -arch=win64 ?what@exception@std@@UEBAPEBDXZ(ptr) MSVCRT_what_exception @ cdecl -norelay $I10_OUTPUT(double long long long ptr) MSVCRT_I10_OUTPUT diff --git a/dlls/msvcr110/msvcr110.spec b/dlls/msvcr110/msvcr110.spec index da9b85e..dc2e1fc 100644 --- a/dlls/msvcr110/msvcr110.spec +++ b/dlls/msvcr110/msvcr110.spec @@ -122,9 +122,9 @@ @ stub -arch=arm ??0default_scheduler_exists@Concurrency@@QAA@XZ @ stub -arch=i386 ??0default_scheduler_exists@Concurrency@@QAE@XZ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??0event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??0event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??0event@Concurrency@@QAA@XZ(ptr) event_ctor +@ thiscall -arch=win32 ??0event@Concurrency@@QAE@XZ(ptr) event_ctor +@ cdecl -arch=win64 ??0event@Concurrency@@QEAA@XZ(ptr) event_ctor @ cdecl -arch=arm ??0exception@std@@QAA@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor @ thiscall -arch=i386 ??0exception@std@@QAE@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor @ cdecl -arch=win64 ??0exception@std@@QEAA@AEBQEBD@Z(ptr ptr) MSVCRT_exception_ctor @@ -314,9 +314,9 @@ @ cdecl -arch=arm ??1critical_section@Concurrency@@QAA@XZ(ptr) critical_section_dtor @ thiscall -arch=i386 ??1critical_section@Concurrency@@QAE@XZ(ptr) critical_section_dtor @ cdecl -arch=win64 ??1critical_section@Concurrency@@QEAA@XZ(ptr) critical_section_dtor -@ stub -arch=arm ??1event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??1event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??1event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??1event@Concurrency@@QAA@XZ(ptr) event_dtor +@ thiscall -arch=win32 ??1event@Concurrency@@QAE@XZ(ptr) event_dtor +@ cdecl -arch=win64 ??1event@Concurrency@@QEAA@XZ(ptr) event_dtor @ cdecl -arch=arm ??1exception@std@@UAA@XZ(ptr) MSVCRT_exception_dtor @ thiscall -arch=i386 ??1exception@std@@UAE@XZ(ptr) MSVCRT_exception_dtor @ cdecl -arch=win64 ??1exception@std@@UEAA@XZ(ptr) MSVCRT_exception_dtor @@ -770,12 +770,12 @@ @ cdecl -arch=arm ?raw_name@type_info@@QBAPBDXZ(ptr) MSVCRT_type_info_raw_name @ thiscall -arch=i386 ?raw_name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_raw_name @ cdecl -arch=win64 ?raw_name@type_info@@QEBAPEBDXZ(ptr) MSVCRT_type_info_raw_name -@ stub -arch=arm ?reset@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?reset@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?reset@event@Concurrency@@QEAAXXZ -@ stub -arch=arm ?set@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?set@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?set@event@Concurrency@@QEAAXXZ +@ cdecl -arch=arm ?reset@event@Concurrency@@QAAXXZ(ptr) event_reset +@ thiscall -arch=win32 ?reset@event@Concurrency@@QAEXXZ(ptr) event_reset +@ cdecl -arch=win64 ?reset@event@Concurrency@@QEAAXXZ(ptr) event_reset +@ cdecl -arch=arm ?set@event@Concurrency@@QAAXXZ(ptr) event_set +@ thiscall -arch=win32 ?set@event@Concurrency@@QAEXXZ(ptr) event_set +@ cdecl -arch=win64 ?set@event@Concurrency@@QEAAXXZ(ptr) event_set @ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_new_handler @ stub -arch=win32 ?set_task_execution_resources@Concurrency@@YAXGPAU_GROUP_AFFINITY@@@Z @ stub -arch=win64 ?set_task_execution_resources@Concurrency@@YAXGPEAU_GROUP_AFFINITY@@@Z @@ -812,14 +812,14 @@ @ cdecl -arch=arm ?wait@_Condition_variable@details@Concurrency@@QAAXAAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait @ thiscall -arch=i386 ?wait@_Condition_variable@details@Concurrency@@QAEXAAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait @ cdecl -arch=win64 ?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait -@ stub -arch=arm ?wait@event@Concurrency@@QAAII@Z -@ stub -arch=i386 ?wait@event@Concurrency@@QAEII@Z -@ stub -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z +@ cdecl -arch=arm ?wait@event@Concurrency@@QAAII@Z(ptr) event_wait +@ thiscall -arch=win32 ?wait@event@Concurrency@@QAEII@Z(ptr) event_wait +@ cdecl -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z(ptr) event_wait @ cdecl -arch=arm ?wait_for@_Condition_variable@details@Concurrency@@QAA_NAAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for @ thiscall -arch=i386 ?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for @ cdecl -arch=win64 ?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for -@ stub -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z -@ stub -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z +@ cdecl -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z(ptr long long long) event_wait_for_multiple +@ cdecl -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z(ptr long long long) event_wait_for_multiple @ cdecl -arch=arm ?what@exception@std@@UBAPBDXZ(ptr) MSVCRT_what_exception @ thiscall -arch=i386 ?what@exception@std@@UBEPBDXZ(ptr) MSVCRT_what_exception @ cdecl -arch=win64 ?what@exception@std@@UEBAPEBDXZ(ptr) MSVCRT_what_exception diff --git a/dlls/msvcr120/msvcr120.spec b/dlls/msvcr120/msvcr120.spec index 8b02a63..7b1cc19 100644 --- a/dlls/msvcr120/msvcr120.spec +++ b/dlls/msvcr120/msvcr120.spec @@ -119,9 +119,9 @@ @ stub -arch=arm ??0default_scheduler_exists@Concurrency@@QAA@XZ @ stub -arch=i386 ??0default_scheduler_exists@Concurrency@@QAE@XZ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??0event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??0event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??0event@Concurrency@@QAA@XZ(ptr) event_ctor +@ thiscall -arch=win32 ??0event@Concurrency@@QAE@XZ(ptr) event_ctor +@ cdecl -arch=win64 ??0event@Concurrency@@QEAA@XZ(ptr) event_ctor @ cdecl -arch=arm ??0exception@std@@QAA@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor @ thiscall -arch=i386 ??0exception@std@@QAE@ABQBD@Z(ptr ptr) MSVCRT_exception_ctor @ cdecl -arch=win64 ??0exception@std@@QEAA@AEBQEBD@Z(ptr ptr) MSVCRT_exception_ctor @@ -310,9 +310,9 @@ @ cdecl -arch=arm ??1critical_section@Concurrency@@QAA@XZ(ptr) critical_section_dtor @ thiscall -arch=i386 ??1critical_section@Concurrency@@QAE@XZ(ptr) critical_section_dtor @ cdecl -arch=win64 ??1critical_section@Concurrency@@QEAA@XZ(ptr) critical_section_dtor -@ stub -arch=arm ??1event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??1event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??1event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??1event@Concurrency@@QAA@XZ(ptr) event_dtor +@ thiscall -arch=win32 ??1event@Concurrency@@QAE@XZ(ptr) event_dtor +@ cdecl -arch=win64 ??1event@Concurrency@@QEAA@XZ(ptr) event_dtor @ cdecl -arch=arm ??1exception@std@@UAA@XZ(ptr) MSVCRT_exception_dtor @ thiscall -arch=i386 ??1exception@std@@UAE@XZ(ptr) MSVCRT_exception_dtor @ cdecl -arch=win64 ??1exception@std@@UEAA@XZ(ptr) MSVCRT_exception_dtor @@ -752,12 +752,12 @@ @ cdecl -arch=arm ?raw_name@type_info@@QBAPBDXZ(ptr) MSVCRT_type_info_raw_name @ thiscall -arch=i386 ?raw_name@type_info@@QBEPBDXZ(ptr) MSVCRT_type_info_raw_name @ cdecl -arch=win64 ?raw_name@type_info@@QEBAPEBDXZ(ptr) MSVCRT_type_info_raw_name -@ stub -arch=arm ?reset@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?reset@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?reset@event@Concurrency@@QEAAXXZ -@ stub -arch=arm ?set@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?set@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?set@event@Concurrency@@QEAAXXZ +@ cdecl -arch=arm ?reset@event@Concurrency@@QAAXXZ(ptr) event_reset +@ thiscall -arch=win32 ?reset@event@Concurrency@@QAEXXZ(ptr) event_reset +@ cdecl -arch=win64 ?reset@event@Concurrency@@QEAAXXZ(ptr) event_reset +@ cdecl -arch=arm ?set@event@Concurrency@@QAAXXZ(ptr) event_set +@ thiscall -arch=win32 ?set@event@Concurrency@@QAEXXZ(ptr) event_set +@ cdecl -arch=win64 ?set@event@Concurrency@@QEAAXXZ(ptr) event_set @ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) MSVCRT_set_new_handler @ stub -arch=win32 ?set_task_execution_resources@Concurrency@@YAXGPAU_GROUP_AFFINITY@@@Z @ stub -arch=win64 ?set_task_execution_resources@Concurrency@@YAXGPEAU_GROUP_AFFINITY@@@Z @@ -794,14 +794,14 @@ @ cdecl -arch=arm ?wait@_Condition_variable@details@Concurrency@@QAAXAAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait @ thiscall -arch=i386 ?wait@_Condition_variable@details@Concurrency@@QAEXAAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait @ cdecl -arch=win64 ?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z(ptr ptr) _Condition_variable_wait -@ stub -arch=arm ?wait@event@Concurrency@@QAAII@Z -@ stub -arch=i386 ?wait@event@Concurrency@@QAEII@Z -@ stub -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z +@ cdecl -arch=arm ?wait@event@Concurrency@@QAAII@Z(ptr) event_wait +@ thiscall -arch=win32 ?wait@event@Concurrency@@QAEII@Z(ptr) event_wait +@ cdecl -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z(ptr) event_wait @ cdecl -arch=arm ?wait_for@_Condition_variable@details@Concurrency@@QAA_NAAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for @ thiscall -arch=i386 ?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for @ cdecl -arch=win64 ?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z(ptr ptr long) _Condition_variable_wait_for -@ stub -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z -@ stub -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z +@ cdecl -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z(ptr long long long) event_wait_for_multiple +@ cdecl -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z(ptr long long long) event_wait_for_multiple @ cdecl -arch=arm ?what@exception@std@@UBAPBDXZ(ptr) MSVCRT_what_exception @ thiscall -arch=i386 ?what@exception@std@@UBEPBDXZ(ptr) MSVCRT_what_exception @ cdecl -arch=win64 ?what@exception@std@@UEBAPEBDXZ(ptr) MSVCRT_what_exception diff --git a/dlls/msvcr120_app/msvcr120_app.spec b/dlls/msvcr120_app/msvcr120_app.spec index d30ff5e..054946a 100644 --- a/dlls/msvcr120_app/msvcr120_app.spec +++ b/dlls/msvcr120_app/msvcr120_app.spec @@ -117,9 +117,9 @@ @ stub -arch=arm ??0default_scheduler_exists@Concurrency@@QAA@XZ @ stub -arch=i386 ??0default_scheduler_exists@Concurrency@@QAE@XZ @ stub -arch=win64 ??0default_scheduler_exists@Concurrency@@QEAA@XZ -@ stub -arch=arm ??0event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??0event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??0event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??0event@Concurrency@@QAA@XZ(ptr) msvcr120.??0event@Concurrency@@QAA@XZ +@ thiscall -arch=win32 ??0event@Concurrency@@QAE@XZ(ptr) msvcr120.??0event@Concurrency@@QAE@XZ +@ cdecl -arch=win64 ??0event@Concurrency@@QEAA@XZ(ptr) msvcr120.??0event@Concurrency@@QEAA@XZ @ cdecl -arch=arm ??0exception@std@@QAA@ABQBD@Z(ptr ptr) msvcr120.??0exception@std@@QAA@ABQBD@Z @ thiscall -arch=i386 ??0exception@std@@QAE@ABQBD@Z(ptr ptr) msvcr120.??0exception@std@@QAE@ABQBD@Z @ cdecl -arch=win64 ??0exception@std@@QEAA@AEBQEBD@Z(ptr ptr) msvcr120.??0exception@std@@QEAA@AEBQEBD@Z @@ -307,9 +307,9 @@ @ cdecl -arch=arm ??1critical_section@Concurrency@@QAA@XZ(ptr) msvcr120.??1critical_section@Concurrency@@QAA@XZ @ thiscall -arch=i386 ??1critical_section@Concurrency@@QAE@XZ(ptr) msvcr120.??1critical_section@Concurrency@@QAE@XZ @ cdecl -arch=win64 ??1critical_section@Concurrency@@QEAA@XZ(ptr) msvcr120.??1critical_section@Concurrency@@QEAA@XZ -@ stub -arch=arm ??1event@Concurrency@@QAA@XZ -@ stub -arch=i386 ??1event@Concurrency@@QAE@XZ -@ stub -arch=win64 ??1event@Concurrency@@QEAA@XZ +@ cdecl -arch=arm ??1event@Concurrency@@QAA@XZ(ptr) msvcr120.??1event@Concurrency@@QAA@XZ +@ thiscall -arch=win32 ??1event@Concurrency@@QAE@XZ(ptr) msvcr120.??1event@Concurrency@@QAE@XZ +@ cdecl -arch=win64 ??1event@Concurrency@@QEAA@XZ(ptr) msvcr120.??1event@Concurrency@@QEAA@XZ @ cdecl -arch=arm ??1exception@std@@UAA@XZ(ptr) msvcr120.??1exception@std@@UAA@XZ @ thiscall -arch=i386 ??1exception@std@@UAE@XZ(ptr) msvcr120.??1exception@std@@UAE@XZ @ cdecl -arch=win64 ??1exception@std@@UEAA@XZ(ptr) msvcr120.??1exception@std@@UEAA@XZ @@ -748,12 +748,12 @@ @ cdecl -arch=arm ?raw_name@type_info@@QBAPBDXZ(ptr) msvcr120.?raw_name@type_info@@QBAPBDXZ @ thiscall -arch=i386 ?raw_name@type_info@@QBEPBDXZ(ptr) msvcr120.?raw_name@type_info@@QBEPBDXZ @ cdecl -arch=win64 ?raw_name@type_info@@QEBAPEBDXZ(ptr) msvcr120.?raw_name@type_info@@QEBAPEBDXZ -@ stub -arch=arm ?reset@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?reset@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?reset@event@Concurrency@@QEAAXXZ -@ stub -arch=arm ?set@event@Concurrency@@QAAXXZ -@ stub -arch=i386 ?set@event@Concurrency@@QAEXXZ -@ stub -arch=win64 ?set@event@Concurrency@@QEAAXXZ +@ cdecl -arch=arm ?reset@event@Concurrency@@QAAXXZ(ptr) msvcr120.?reset@event@Concurrency@@QAAXXZ +@ thiscall -arch=win32 ?reset@event@Concurrency@@QAEXXZ(ptr) msvcr120.?reset@event@Concurrency@@QAEXXZ +@ cdecl -arch=win64 ?reset@event@Concurrency@@QEAAXXZ(ptr) msvcr120.?reset@event@Concurrency@@QEAAXXZ +@ cdecl -arch=arm ?set@event@Concurrency@@QAAXXZ(ptr) msvcr120.?set@event@Concurrency@@QAAXXZ +@ thiscall -arch=win32 ?set@event@Concurrency@@QAEXXZ(ptr) msvcr120.?set@event@Concurrency@@QAEXXZ +@ cdecl -arch=win64 ?set@event@Concurrency@@QEAAXXZ(ptr) msvcr120.?set@event@Concurrency@@QEAAXXZ @ cdecl ?set_new_handler@@YAP6AXXZP6AXXZ@Z(ptr) msvcr120.?set_new_handler@@YAP6AXXZP6AXXZ@Z @ stub -arch=win32 ?set_task_execution_resources@Concurrency@@YAXGPAU_GROUP_AFFINITY@@@Z @ stub -arch=win64 ?set_task_execution_resources@Concurrency@@YAXGPEAU_GROUP_AFFINITY@@@Z @@ -790,14 +790,14 @@ @ cdecl -arch=arm ?wait@_Condition_variable@details@Concurrency@@QAAXAAVcritical_section@3@@Z(ptr ptr) msvcr120.?wait@_Condition_variable@details@Concurrency@@QAAXAAVcritical_section@3@@Z @ thiscall -arch=i386 ?wait@_Condition_variable@details@Concurrency@@QAEXAAVcritical_section@3@@Z(ptr ptr) msvcr120.?wait@_Condition_variable@details@Concurrency@@QAEXAAVcritical_section@3@@Z @ cdecl -arch=win64 ?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z(ptr ptr) msvcr120.?wait@_Condition_variable@details@Concurrency@@QEAAXAEAVcritical_section@3@@Z -@ stub -arch=arm ?wait@event@Concurrency@@QAAII@Z -@ stub -arch=i386 ?wait@event@Concurrency@@QAEII@Z -@ stub -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z +@ cdecl -arch=arm ?wait@event@Concurrency@@QAAII@Z(ptr) msvcr120.?wait@event@Concurrency@@QAAII@Z +@ thiscall -arch=win32 ?wait@event@Concurrency@@QAEII@Z(ptr) msvcr120.?wait@event@Concurrency@@QAEII@Z +@ cdecl -arch=win64 ?wait@event@Concurrency@@QEAA_KI@Z(ptr) msvcr120.?wait@event@Concurrency@@QEAA_KI@Z @ cdecl -arch=arm ?wait_for@_Condition_variable@details@Concurrency@@QAA_NAAVcritical_section@3@I@Z(ptr ptr long) msvcr120.?wait_for@_Condition_variable@details@Concurrency@@QAA_NAAVcritical_section@3@I@Z @ thiscall -arch=i386 ?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z(ptr ptr long) msvcr120.?wait_for@_Condition_variable@details@Concurrency@@QAE_NAAVcritical_section@3@I@Z @ cdecl -arch=win64 ?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z(ptr ptr long) msvcr120.?wait_for@_Condition_variable@details@Concurrency@@QEAA_NAEAVcritical_section@3@I@Z -@ stub -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z -@ stub -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z +@ cdecl -arch=win32 ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z(ptr long long long) msvcr120.?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z +@ cdecl -arch=win64 ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z(ptr long long long) msvcr120.?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z @ cdecl -arch=arm ?what@exception@std@@UBAPBDXZ(ptr) msvcr120.?what@exception@std@@UBAPBDXZ @ thiscall -arch=i386 ?what@exception@std@@UBEPBDXZ(ptr) msvcr120.?what@exception@std@@UBEPBDXZ @ cdecl -arch=win64 ?what@exception@std@@UEBAPEBDXZ(ptr) msvcr120.?what@exception@std@@UEBAPEBDXZ diff --git a/dlls/msvcrt/lock.c b/dlls/msvcrt/lock.c index f4c44170..83b5116 100644 --- a/dlls/msvcrt/lock.c +++ b/dlls/msvcrt/lock.c @@ -29,6 +29,7 @@ #include "cppexcept.h" #include "mtdll.h" #include "cxx.h" +#include "concrt.h" WINE_DEFAULT_DEBUG_CHANNEL(msvcrt); @@ -550,6 +551,63 @@ unsigned int __cdecl _GetConcurrency(void) return val; } +typedef struct +{ + volatile void *wait; + void *reset; + critical_section cs; +} event; + +/* ??0event@Concurrency@@QAE@XZ */ +/* ??0event@Concurrency@@QEAA@XZ */ +DEFINE_THISCALL_WRAPPER(event_ctor, 4) +event* __thiscall event_ctor(event *this) +{ + FIXME("(%p) stub\n", this); + return this; +} + +/* ??1event@Concurrency@@QAE@XZ */ +/* ??1event@Concurrency@@QEAA@XZ */ +DEFINE_THISCALL_WRAPPER(event_dtor, 4) +void __thiscall event_dtor(event *this) +{ + FIXME("(%p) stub\n", this); +} + +/* ?reset@event@Concurrency@@QAEXXZ */ +/* ?reset@event@Concurrency@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(event_reset, 4) +void __thiscall event_reset(event *this) +{ + FIXME("(%p) stub\n", this); +} + +/* ?set@event@Concurrency@@QAEXXZ */ +/* ?set@event@Concurrency@@QEAAXXZ */ +DEFINE_THISCALL_WRAPPER(event_set, 4) +void __thiscall event_set(event *this) +{ + FIXME("(%p) stub\n", this); +} + +/* ?wait@event@Concurrency@@QAEII@Z */ +/* ?wait@event@Concurrency@@QEAA_KI@Z */ +DEFINE_THISCALL_WRAPPER(event_wait, 8) +size_t __thiscall event_wait(event *this, unsigned int timeout) +{ + FIXME("(%p %u) stub\n", this, timeout); + return COOPERATIVE_WAIT_TIMEOUT; +} + +/* ?wait_for_multiple@event@Concurrency@@SAIPAPAV12@I_NI@Z */ +/* ?wait_for_multiple@event@Concurrency@@SA_KPEAPEAV12@_K_NI@Z */ +int __cdecl event_wait_for_multiple(event **events, unsigned int count, MSVCRT_bool wait_all, unsigned int timeout) +{ + FIXME("(%p %u %d %u) stub\n", events, count, wait_all, timeout); + return COOPERATIVE_WAIT_TIMEOUT; +} + #endif #if _MSVCR_VER >= 110 diff --git a/include/concrt.h b/include/concrt.h new file mode 100644 index 0000000..ead6705 --- /dev/null +++ b/include/concrt.h @@ -0,0 +1,25 @@ +/* + * Copyright (C) 2017 Daniel Lehman + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef WINE_CONCRT_H_ +#define WINE_CONCRT_H_ + +#define COOPERATIVE_TIMEOUT_INFINITE ((unsigned int)-1) +#define COOPERATIVE_WAIT_TIMEOUT ~0 + +#endif -- 1.9.5