Piotr Caban : msvcrt: Forward remaining CurrentScheduler functions to current scheduler object.
Alexandre Julliard
julliard at winehq.org
Mon Apr 3 14:01:48 CDT 2017
Module: wine
Branch: master
Commit: d3020a606ab7716b50455b657cb1dea10f3de172
URL: http://source.winehq.org/git/wine.git/?a=commit;h=d3020a606ab7716b50455b657cb1dea10f3de172
Author: Piotr Caban <piotr at codeweavers.com>
Date: Mon Apr 3 15:06:01 2017 +0200
msvcrt: Forward remaining CurrentScheduler functions to current scheduler object.
Signed-off-by: Piotr Caban <piotr at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/msvcrt/cxx.h | 7 +++++
dlls/msvcrt/scheduler.c | 69 +++++++++++++++++++++++++++++++++++++++----------
2 files changed, 62 insertions(+), 14 deletions(-)
diff --git a/dlls/msvcrt/cxx.h b/dlls/msvcrt/cxx.h
index 476f66a..50bf7ca 100644
--- a/dlls/msvcrt/cxx.h
+++ b/dlls/msvcrt/cxx.h
@@ -267,9 +267,16 @@ typedef struct
extern void *vtbl_wrapper_0;
extern void *vtbl_wrapper_4;
extern void *vtbl_wrapper_8;
+extern void *vtbl_wrapper_12;
extern void *vtbl_wrapper_16;
extern void *vtbl_wrapper_20;
+extern void *vtbl_wrapper_24;
extern void *vtbl_wrapper_28;
+extern void *vtbl_wrapper_32;
+extern void *vtbl_wrapper_36;
+extern void *vtbl_wrapper_40;
+extern void *vtbl_wrapper_44;
+extern void *vtbl_wrapper_48;
#else
diff --git a/dlls/msvcrt/scheduler.c b/dlls/msvcrt/scheduler.c
index b405f39..619c89e 100644
--- a/dlls/msvcrt/scheduler.c
+++ b/dlls/msvcrt/scheduler.c
@@ -49,9 +49,16 @@ static int scheduler_id = -1;
DEFINE_VTBL_WRAPPER(0);
DEFINE_VTBL_WRAPPER(4);
DEFINE_VTBL_WRAPPER(8);
+DEFINE_VTBL_WRAPPER(12);
DEFINE_VTBL_WRAPPER(16);
DEFINE_VTBL_WRAPPER(20);
+DEFINE_VTBL_WRAPPER(24);
DEFINE_VTBL_WRAPPER(28);
+DEFINE_VTBL_WRAPPER(32);
+DEFINE_VTBL_WRAPPER(36);
+DEFINE_VTBL_WRAPPER(40);
+DEFINE_VTBL_WRAPPER(44);
+DEFINE_VTBL_WRAPPER(48);
#endif
@@ -117,9 +124,27 @@ typedef struct Scheduler {
} Scheduler;
#define call_Scheduler_Id(this) CALL_VTBL_FUNC(this, 4, unsigned int, (const Scheduler*), (this))
#define call_Scheduler_GetNumberOfVirtualProcessors(this) CALL_VTBL_FUNC(this, 8, unsigned int, (const Scheduler*), (this))
+#define call_Scheduler_GetPolicy(this,policy) CALL_VTBL_FUNC(this, 12, \
+ SchedulerPolicy*, (Scheduler*,SchedulerPolicy*), (this,policy))
#define call_Scheduler_Reference(this) CALL_VTBL_FUNC(this, 16, unsigned int, (Scheduler*), (this))
#define call_Scheduler_Release(this) CALL_VTBL_FUNC(this, 20, unsigned int, (Scheduler*), (this))
+#define call_Scheduler_RegisterShutdownEvent(this,event) CALL_VTBL_FUNC(this, 24, void, (Scheduler*,HANDLE), (this,event))
#define call_Scheduler_Attach(this) CALL_VTBL_FUNC(this, 28, void, (Scheduler*), (this))
+#if _MSVCR_VER > 100
+#define call_Scheduler_CreateScheduleGroup_loc(this,placement) CALL_VTBL_FUNC(this, 32, \
+ /*ScheduleGroup*/void*, (Scheduler*,/*location*/void*), (this,placement))
+#define call_Scheduler_CreateScheduleGroup(this) CALL_VTBL_FUNC(this, 36, /*ScheduleGroup*/void*, (Scheduler*), (this))
+#define call_Scheduler_ScheduleTask_loc(this,proc,data,placement) CALL_VTBL_FUNC(this, 40, \
+ void, (Scheduler*,void (__cdecl*)(void*),void*,/*location*/void*), (this,proc,data,placement))
+#define call_Scheduler_ScheduleTask(this,proc,data) CALL_VTBL_FUNC(this, 44, \
+ void, (Scheduler*,void (__cdecl*)(void*),void*), (this,proc,data))
+#define call_Scheduler_IsAvailableLocation(this,placement) CALL_VTBL_FUNC(this, 48, \
+ MSVCRT_bool, (Scheduler*,const /*location*/void*), (this,placement))
+#else
+#define call_Scheduler_CreateScheduleGroup(this) CALL_VTBL_FUNC(this, 32, /*ScheduleGroup*/void*, (Scheduler*), (this))
+#define call_Scheduler_ScheduleTask(this,proc,data) CALL_VTBL_FUNC(this, 36, \
+ void, (Scheduler*,void (__cdecl*)(void*),void*), (this,proc,data))
+#endif
typedef struct {
Scheduler scheduler;
@@ -882,27 +907,31 @@ Scheduler* __cdecl CurrentScheduler_Get(void)
return get_current_scheduler();
}
+#if _MSVCR_VER > 100
/* ?CreateScheduleGroup at CurrentScheduler@Concurrency@@SAPAVScheduleGroup at 2@AAVlocation at 2@@Z */
/* ?CreateScheduleGroup at CurrentScheduler@Concurrency@@SAPEAVScheduleGroup at 2@AEAVlocation at 2@@Z */
/*ScheduleGroup*/void* __cdecl CurrentScheduler_CreateScheduleGroup_loc(/*location*/void *placement)
{
- FIXME("(%p) stub\n", placement);
- return NULL;
+ TRACE("(%p)\n", placement);
+ return call_Scheduler_CreateScheduleGroup_loc(get_current_scheduler(), placement);
}
+#endif
/* ?CreateScheduleGroup at CurrentScheduler@Concurrency@@SAPAVScheduleGroup at 2@XZ */
/* ?CreateScheduleGroup at CurrentScheduler@Concurrency@@SAPEAVScheduleGroup at 2@XZ */
/*ScheduleGroup*/void* __cdecl CurrentScheduler_CreateScheduleGroup(void)
{
- FIXME("() stub\n");
- return NULL;
+ TRACE("()\n");
+ return call_Scheduler_CreateScheduleGroup(get_current_scheduler());
}
/* ?GetNumberOfVirtualProcessors at CurrentScheduler@Concurrency@@SAIXZ */
unsigned int __cdecl CurrentScheduler_GetNumberOfVirtualProcessors(void)
{
Scheduler *scheduler = try_get_current_scheduler();
+
TRACE("()\n");
+
if(!scheduler)
return -1;
return call_Scheduler_GetNumberOfVirtualProcessors(scheduler);
@@ -911,50 +940,62 @@ unsigned int __cdecl CurrentScheduler_GetNumberOfVirtualProcessors(void)
/* ?GetPolicy at CurrentScheduler@Concurrency@@SA?AVSchedulerPolicy at 2@XZ */
SchedulerPolicy* __cdecl CurrentScheduler_GetPolicy(SchedulerPolicy *policy)
{
- FIXME("(%p) stub\n", policy);
- return NULL;
+ TRACE("(%p)\n", policy);
+ return call_Scheduler_GetPolicy(get_current_scheduler(), policy);
}
/* ?Id at CurrentScheduler@Concurrency@@SAIXZ */
unsigned int __cdecl CurrentScheduler_Id(void)
{
- Context *context = try_get_current_context();
+ Scheduler *scheduler = try_get_current_scheduler();
TRACE("()\n");
- if(!context)
+ if(!scheduler)
return -1;
- return call_Scheduler_Id(CurrentScheduler_Get());
+ return call_Scheduler_Id(scheduler);
}
+#if _MSVCR_VER > 100
/* ?IsAvailableLocation at CurrentScheduler@Concurrency@@SA_NABVlocation at 2@@Z */
/* ?IsAvailableLocation at CurrentScheduler@Concurrency@@SA_NAEBVlocation at 2@@Z */
MSVCRT_bool __cdecl CurrentScheduler_IsAvailableLocation(const /*location*/void *placement)
{
- FIXME("(%p) stub\n", placement);
- return 0;
+ Scheduler *scheduler = try_get_current_scheduler();
+
+ TRACE("(%p)\n", placement);
+
+ if(!scheduler)
+ return FALSE;
+ return call_Scheduler_IsAvailableLocation(scheduler, placement);
}
+#endif
/* ?RegisterShutdownEvent at CurrentScheduler@Concurrency@@SAXPAX at Z */
/* ?RegisterShutdownEvent at CurrentScheduler@Concurrency@@SAXPEAX at Z */
void __cdecl CurrentScheduler_RegisterShutdownEvent(HANDLE event)
{
- FIXME("(%p) stub\n", event);
+ TRACE("(%p)\n", event);
+ call_Scheduler_RegisterShutdownEvent(get_current_scheduler(), event);
}
+#if _MSVCR_VER > 100
/* ?ScheduleTask at CurrentScheduler@Concurrency@@SAXP6AXPAX at Z0AAVlocation@2@@Z */
/* ?ScheduleTask at CurrentScheduler@Concurrency@@SAXP6AXPEAX at Z0AEAVlocation@2@@Z */
void __cdecl CurrentScheduler_ScheduleTask_loc(void (__cdecl *proc)(void*),
void *data, /*location*/void *placement)
{
- FIXME("(%p %p %p) stub\n", proc, data, placement);
+ TRACE("(%p %p %p)\n", proc, data, placement);
+ call_Scheduler_ScheduleTask_loc(get_current_scheduler(), proc, data, placement);
}
+#endif
/* ?ScheduleTask at CurrentScheduler@Concurrency@@SAXP6AXPAX at Z0@Z */
/* ?ScheduleTask at CurrentScheduler@Concurrency@@SAXP6AXPEAX at Z0@Z */
void __cdecl CurrentScheduler_ScheduleTask(void (__cdecl *proc)(void*), void *data)
{
- FIXME("(%p %p) stub\n", proc, data);
+ TRACE("(%p %p)\n", proc, data);
+ call_Scheduler_ScheduleTask(get_current_scheduler(), proc, data);
}
extern const vtable_ptr MSVCRT_type_info_vtable;
More information about the wine-cvs
mailing list