Piotr Caban : msvcrt: Add Scheduler:: SetDefaultSchedulerPolicy implementation.

Alexandre Julliard julliard at winehq.org
Fri Mar 31 14:26:28 CDT 2017


Module: wine
Branch: master
Commit: b26fed8ad1913f6d5589e04982dfa440784cec02
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=b26fed8ad1913f6d5589e04982dfa440784cec02

Author: Piotr Caban <piotr at codeweavers.com>
Date:   Thu Mar 30 22:47:44 2017 +0200

msvcrt: Add Scheduler::SetDefaultSchedulerPolicy implementation.

Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/msvcrt/scheduler.c | 29 +++++++++++++++++++++++++++--
 1 file changed, 27 insertions(+), 2 deletions(-)

diff --git a/dlls/msvcrt/scheduler.c b/dlls/msvcrt/scheduler.c
index 4a8eb8e..26ca900 100644
--- a/dlls/msvcrt/scheduler.c
+++ b/dlls/msvcrt/scheduler.c
@@ -132,6 +132,16 @@ extern const vtable_ptr MSVCRT_ThreadScheduler_vtable;
 
 static int context_tls_index = TLS_OUT_OF_INDEXES;
 
+static CRITICAL_SECTION default_scheduler_cs;
+static CRITICAL_SECTION_DEBUG default_scheduler_cs_debug =
+{
+    0, 0, &default_scheduler_cs,
+    { &default_scheduler_cs_debug.ProcessLocksList, &default_scheduler_cs_debug.ProcessLocksList },
+      0, 0, { (DWORD_PTR)(__FILE__ ": default_scheduler_cs") }
+};
+static CRITICAL_SECTION default_scheduler_cs = { &default_scheduler_cs_debug, -1, 0, 0, 0, 0 };
+static SchedulerPolicy default_scheduler_policy;
+
 static Context* try_get_current_context(void)
 {
     if (context_tls_index == TLS_OUT_OF_INDEXES)
@@ -745,14 +755,27 @@ Scheduler* __cdecl Scheduler_Create(const SchedulerPolicy *policy)
 /* ?ResetDefaultSchedulerPolicy at Scheduler@Concurrency@@SAXXZ */
 void __cdecl Scheduler_ResetDefaultSchedulerPolicy(void)
 {
-    FIXME("() stub\n");
+    TRACE("()\n");
+
+    EnterCriticalSection(&default_scheduler_cs);
+    if(default_scheduler_policy.policy_container)
+        SchedulerPolicy_dtor(&default_scheduler_policy);
+    SchedulerPolicy_ctor(&default_scheduler_policy);
+    LeaveCriticalSection(&default_scheduler_cs);
 }
 
 /* ?SetDefaultSchedulerPolicy at Scheduler@Concurrency@@SAXABVSchedulerPolicy at 2@@Z */
 /* ?SetDefaultSchedulerPolicy at Scheduler@Concurrency@@SAXAEBVSchedulerPolicy at 2@@Z */
 void __cdecl Scheduler_SetDefaultSchedulerPolicy(const SchedulerPolicy *policy)
 {
-    FIXME("(%p) stub\n", policy);
+    TRACE("(%p)\n", policy);
+
+    EnterCriticalSection(&default_scheduler_cs);
+    if(!default_scheduler_policy.policy_container)
+        SchedulerPolicy_copy_ctor(&default_scheduler_policy, policy);
+    else
+        SchedulerPolicy_op_assign(&default_scheduler_policy, policy);
+    LeaveCriticalSection(&default_scheduler_cs);
 }
 
 /* ?Create at CurrentScheduler@Concurrency@@SAXABVSchedulerPolicy at 2@@Z */
@@ -902,6 +925,8 @@ void msvcrt_free_scheduler(void)
 {
     if (context_tls_index != TLS_OUT_OF_INDEXES)
         TlsFree(context_tls_index);
+    if(default_scheduler_policy.policy_container)
+        SchedulerPolicy_dtor(&default_scheduler_policy);
 }
 
 void msvcrt_free_scheduler_thread(void)




More information about the wine-cvs mailing list