Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
b0e4fd05
Commit
b0e4fd05
authored
Aug 07, 2015
by
Sebastian Lackner
Committed by
Alexandre Julliard
Aug 07, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
vcomp: Implement _vcomp_enter_critsect and _vcomp_leave_critsect.
parent
89b38374
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
42 additions
and
8 deletions
+42
-8
main.c
dlls/vcomp/main.c
+34
-0
vcomp.spec
dlls/vcomp/vcomp.spec
+2
-2
vcomp100.spec
dlls/vcomp100/vcomp100.spec
+2
-2
vcomp110.spec
dlls/vcomp110/vcomp110.spec
+2
-2
vcomp90.spec
dlls/vcomp90/vcomp90.spec
+2
-2
No files found.
dlls/vcomp/main.c
View file @
b0e4fd05
...
...
@@ -979,6 +979,40 @@ void WINAPIV _vcomp_fork(BOOL ifval, int nargs, void *wrapper, ...)
__ms_va_end
(
team_data
.
valist
);
}
void
CDECL
_vcomp_enter_critsect
(
CRITICAL_SECTION
**
critsect
)
{
TRACE
(
"(%p)
\n
"
,
critsect
);
if
(
!*
critsect
)
{
CRITICAL_SECTION
*
new_critsect
;
if
(
!
(
new_critsect
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
new_critsect
))))
{
ERR
(
"could not allocate critical section
\n
"
);
ExitProcess
(
1
);
}
InitializeCriticalSection
(
new_critsect
);
new_critsect
->
DebugInfo
->
Spare
[
0
]
=
(
DWORD_PTR
)(
__FILE__
": critsect"
);
if
(
interlocked_cmpxchg_ptr
((
void
**
)
critsect
,
new_critsect
,
NULL
)
!=
NULL
)
{
/* someone beat us to it */
new_critsect
->
DebugInfo
->
Spare
[
0
]
=
0
;
DeleteCriticalSection
(
new_critsect
);
HeapFree
(
GetProcessHeap
(),
0
,
new_critsect
);
}
}
EnterCriticalSection
(
*
critsect
);
}
void
CDECL
_vcomp_leave_critsect
(
CRITICAL_SECTION
*
critsect
)
{
TRACE
(
"(%p)
\n
"
,
critsect
);
LeaveCriticalSection
(
critsect
);
}
BOOL
WINAPI
DllMain
(
HINSTANCE
instance
,
DWORD
reason
,
LPVOID
reserved
)
{
TRACE
(
"(%p, %d, %p)
\n
"
,
instance
,
reason
,
reserved
);
...
...
dlls/vcomp/vcomp.spec
View file @
b0e4fd05
...
...
@@ -53,7 +53,7 @@
@ cdecl _vcomp_barrier()
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
@
stub _vcomp_enter_critsect
@
cdecl _vcomp_enter_critsect(ptr)
@ stub _vcomp_flush
@ cdecl _vcomp_for_dynamic_init(long long long long long)
@ stub _vcomp_for_dynamic_init_i8
...
...
@@ -66,7 +66,7 @@
@ stub _vcomp_for_static_simple_init_i8
@ varargs _vcomp_fork(long long ptr)
@ stub _vcomp_get_thread_num
@
stub _vcomp_leave_critsect
@
cdecl _vcomp_leave_critsect(ptr)
@ stub _vcomp_master_barrier
@ cdecl _vcomp_master_begin()
@ cdecl _vcomp_master_end()
...
...
dlls/vcomp100/vcomp100.spec
View file @
b0e4fd05
...
...
@@ -53,7 +53,7 @@
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
@
stub
_vcomp_enter_critsect
@
cdecl _vcomp_enter_critsect(ptr) vcomp.
_vcomp_enter_critsect
@ stub _vcomp_flush
@ cdecl _vcomp_for_dynamic_init(long long long long long) vcomp._vcomp_for_dynamic_init
@ stub _vcomp_for_dynamic_init_i8
...
...
@@ -66,7 +66,7 @@
@ stub _vcomp_for_static_simple_init_i8
@ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork
@ stub _vcomp_get_thread_num
@
stub
_vcomp_leave_critsect
@
cdecl _vcomp_leave_critsect(ptr) vcomp.
_vcomp_leave_critsect
@ stub _vcomp_master_barrier
@ cdecl _vcomp_master_begin() vcomp._vcomp_master_begin
@ cdecl _vcomp_master_end() vcomp._vcomp_master_end
...
...
dlls/vcomp110/vcomp110.spec
View file @
b0e4fd05
...
...
@@ -54,7 +54,7 @@
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
@
stub
_vcomp_enter_critsect
@
cdecl _vcomp_enter_critsect(ptr) vcomp.
_vcomp_enter_critsect
@ stub _vcomp_flush
@ cdecl _vcomp_for_dynamic_init(long long long long long) vcomp._vcomp_for_dynamic_init
@ stub _vcomp_for_dynamic_init_i8
...
...
@@ -67,7 +67,7 @@
@ stub _vcomp_for_static_simple_init_i8
@ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork
@ stub _vcomp_get_thread_num
@
stub
_vcomp_leave_critsect
@
cdecl _vcomp_leave_critsect(ptr) vcomp.
_vcomp_leave_critsect
@ stub _vcomp_master_barrier
@ cdecl _vcomp_master_begin() vcomp._vcomp_master_begin
@ cdecl _vcomp_master_end() vcomp._vcomp_master_end
...
...
dlls/vcomp90/vcomp90.spec
View file @
b0e4fd05
...
...
@@ -53,7 +53,7 @@
@ cdecl _vcomp_barrier() vcomp._vcomp_barrier
@ stub _vcomp_copyprivate_broadcast
@ stub _vcomp_copyprivate_receive
@
stub
_vcomp_enter_critsect
@
cdecl _vcomp_enter_critsect(ptr) vcomp.
_vcomp_enter_critsect
@ stub _vcomp_flush
@ cdecl _vcomp_for_dynamic_init(long long long long long) vcomp._vcomp_for_dynamic_init
@ stub _vcomp_for_dynamic_init_i8
...
...
@@ -66,7 +66,7 @@
@ stub _vcomp_for_static_simple_init_i8
@ varargs _vcomp_fork(long long ptr) vcomp._vcomp_fork
@ stub _vcomp_get_thread_num
@
stub
_vcomp_leave_critsect
@
cdecl _vcomp_leave_critsect(ptr) vcomp.
_vcomp_leave_critsect
@ stub _vcomp_master_barrier
@ cdecl _vcomp_master_begin() vcomp._vcomp_master_begin
@ cdecl _vcomp_master_end() vcomp._vcomp_master_end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment