Commit 5debf060 authored by Piotr Caban's avatar Piotr Caban Committed by Alexandre Julliard

msvcrt: Add ThreadScheduler::GetPolicy implementation.

parent bac1ca70
...@@ -52,6 +52,26 @@ DEFINE_VTBL_WRAPPER(20); ...@@ -52,6 +52,26 @@ DEFINE_VTBL_WRAPPER(20);
#endif #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 { typedef struct {
const vtable_ptr *vtable; const vtable_ptr *vtable;
} Context; } Context;
...@@ -89,6 +109,7 @@ typedef struct { ...@@ -89,6 +109,7 @@ typedef struct {
typedef struct { typedef struct {
Scheduler scheduler; Scheduler scheduler;
SchedulerPolicy policy;
} ThreadScheduler; } ThreadScheduler;
extern const vtable_ptr MSVCRT_ThreadScheduler_vtable; extern const vtable_ptr MSVCRT_ThreadScheduler_vtable;
...@@ -329,26 +350,6 @@ void CDECL Concurrency_Free(void* mem) ...@@ -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@SchedulerPolicy@Concurrency@@QAEIW4PolicyElementKey@2@I@Z */ /* ?SetPolicyValue@SchedulerPolicy@Concurrency@@QAEIW4PolicyElementKey@2@I@Z */
/* ?SetPolicyValue@SchedulerPolicy@Concurrency@@QEAAIW4PolicyElementKey@2@I@Z */ /* ?SetPolicyValue@SchedulerPolicy@Concurrency@@QEAAIW4PolicyElementKey@2@I@Z */
DEFINE_THISCALL_WRAPPER(SchedulerPolicy_SetPolicyValue, 12) DEFINE_THISCALL_WRAPPER(SchedulerPolicy_SetPolicyValue, 12)
...@@ -533,8 +534,8 @@ DEFINE_THISCALL_WRAPPER(ThreadScheduler_GetPolicy, 8) ...@@ -533,8 +534,8 @@ DEFINE_THISCALL_WRAPPER(ThreadScheduler_GetPolicy, 8)
SchedulerPolicy* __thiscall ThreadScheduler_GetPolicy( SchedulerPolicy* __thiscall ThreadScheduler_GetPolicy(
const ThreadScheduler *this, SchedulerPolicy *ret) const ThreadScheduler *this, SchedulerPolicy *ret)
{ {
FIXME("(%p %p) stub\n", this, ret); TRACE("(%p %p)\n", this, ret);
return NULL; return SchedulerPolicy_copy_ctor(ret, &this->policy);
} }
DEFINE_THISCALL_WRAPPER(ThreadScheduler_Reference, 4) DEFINE_THISCALL_WRAPPER(ThreadScheduler_Reference, 4)
...@@ -602,6 +603,7 @@ MSVCRT_bool __thiscall ThreadScheduler_IsAvailableLocation( ...@@ -602,6 +603,7 @@ MSVCRT_bool __thiscall ThreadScheduler_IsAvailableLocation(
static void ThreadScheduler_dtor(ThreadScheduler *this) static void ThreadScheduler_dtor(ThreadScheduler *this)
{ {
SchedulerPolicy_dtor(&this->policy);
} }
DEFINE_THISCALL_WRAPPER(ThreadScheduler_vector_dtor, 8) DEFINE_THISCALL_WRAPPER(ThreadScheduler_vector_dtor, 8)
...@@ -630,6 +632,7 @@ static ThreadScheduler* ThreadScheduler_ctor(ThreadScheduler *this, ...@@ -630,6 +632,7 @@ static ThreadScheduler* ThreadScheduler_ctor(ThreadScheduler *this,
TRACE("(%p)->()\n", this); TRACE("(%p)->()\n", this);
this->scheduler.vtable = &MSVCRT_ThreadScheduler_vtable; this->scheduler.vtable = &MSVCRT_ThreadScheduler_vtable;
SchedulerPolicy_copy_ctor(&this->policy, policy);
return this; return this;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment