Piotr Caban : msvcrt: Add ThreadScheduler::GetPolicy implementation.
Module: wine Branch: master Commit: 5debf060b8cba0639694f4a8088b2b72b4561f60 URL: http://source.winehq.org/git/wine.git/?a=commit;h=5debf060b8cba0639694f4a808... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Tue Mar 28 10:50:32 2017 +0200 msvcrt: Add ThreadScheduler::GetPolicy implementation. Signed-off-by: Piotr Caban <piotr(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/msvcrt/scheduler.c | 47 +++++++++++++++++++++++++---------------------- 1 file changed, 25 insertions(+), 22 deletions(-) diff --git a/dlls/msvcrt/scheduler.c b/dlls/msvcrt/scheduler.c index a1fd8ba..1c9a770 100644 --- a/dlls/msvcrt/scheduler.c +++ b/dlls/msvcrt/scheduler.c @@ -52,6 +52,26 @@ DEFINE_VTBL_WRAPPER(20); #endif +typedef enum { + SchedulerKind, + MaxConcurrency, + MinConcurrency, + TargetOversubscriptionFactor, + LocalContextCacheSize, + ContextStackSize, + ContextPriority, + SchedulingProtocol, + DynamicProgressFeedback, + WinRTInitialization, + last_policy_id +} PolicyElementKey; + +typedef struct { + struct _policy_container { + unsigned int policies[last_policy_id]; + } *policy_container; +} SchedulerPolicy; + typedef struct { const vtable_ptr *vtable; } Context; @@ -89,6 +109,7 @@ typedef struct { typedef struct { Scheduler scheduler; + SchedulerPolicy policy; } ThreadScheduler; extern const vtable_ptr MSVCRT_ThreadScheduler_vtable; @@ -329,26 +350,6 @@ void CDECL Concurrency_Free(void* mem) } } -typedef enum { - SchedulerKind, - MaxConcurrency, - MinConcurrency, - TargetOversubscriptionFactor, - LocalContextCacheSize, - ContextStackSize, - ContextPriority, - SchedulingProtocol, - DynamicProgressFeedback, - WinRTInitialization, - last_policy_id -} PolicyElementKey; - -typedef struct { - struct _policy_container { - unsigned int policies[last_policy_id]; - } *policy_container; -} SchedulerPolicy; - /* ?SetPolicyValue(a)SchedulerPolicy@Concurrency@@QAEIW4PolicyElementKey(a)2@I(a)Z */ /* ?SetPolicyValue(a)SchedulerPolicy@Concurrency@@QEAAIW4PolicyElementKey(a)2@I(a)Z */ DEFINE_THISCALL_WRAPPER(SchedulerPolicy_SetPolicyValue, 12) @@ -533,8 +534,8 @@ DEFINE_THISCALL_WRAPPER(ThreadScheduler_GetPolicy, 8) SchedulerPolicy* __thiscall ThreadScheduler_GetPolicy( const ThreadScheduler *this, SchedulerPolicy *ret) { - FIXME("(%p %p) stub\n", this, ret); - return NULL; + TRACE("(%p %p)\n", this, ret); + return SchedulerPolicy_copy_ctor(ret, &this->policy); } DEFINE_THISCALL_WRAPPER(ThreadScheduler_Reference, 4) @@ -602,6 +603,7 @@ MSVCRT_bool __thiscall ThreadScheduler_IsAvailableLocation( static void ThreadScheduler_dtor(ThreadScheduler *this) { + SchedulerPolicy_dtor(&this->policy); } DEFINE_THISCALL_WRAPPER(ThreadScheduler_vector_dtor, 8) @@ -630,6 +632,7 @@ static ThreadScheduler* ThreadScheduler_ctor(ThreadScheduler *this, TRACE("(%p)->()\n", this); this->scheduler.vtable = &MSVCRT_ThreadScheduler_vtable; + SchedulerPolicy_copy_ctor(&this->policy, policy); return this; }
participants (1)
-
Alexandre Julliard