[Bug 46047] New: Multiple applications want Windows 8+ futex-like operations kernel32.dll.WaitOnAddress , kernel32.dll.WakeByAddress{All,Single} (VLC)
wine-bugs at winehq.org
wine-bugs at winehq.org
Fri Oct 26 03:36:13 CDT 2018
https://bugs.winehq.org/show_bug.cgi?id=46047
Bug ID: 46047
Summary: Multiple applications want Windows 8+ futex-like
operations kernel32.dll.WaitOnAddress,
kernel32.dll.WakeByAddress{All,Single} (VLC)
Product: Wine
Version: 3.18
Hardware: x86-64
OS: Linux
Status: NEW
Severity: normal
Priority: P2
Component: kernel32
Assignee: wine-bugs at winehq.org
Reporter: focht at gmx.net
Distribution: ---
Hello folks,
to track:
* https://www.winehq.org/pipermail/wine-devel/2018-October/134085.html
* https://www.winehq.org/pipermail/wine-devel/2018-October/134086.html
There is a series of articles on the background/inner workings of this Windows
8+ futex-like operations by Raymond Chen on Microsoft developer blog "The Old
New Thing":
(1) https://blogs.msdn.microsoft.com/oldnewthing/20160823-00/?p=94145
("WaitOnAddress lets you create a synchronization object out of any data
variable, even a byte")
(2) https://blogs.msdn.microsoft.com/oldnewthing/20160824-00/?p=94155
("Implementing a synchronization barrier in terms of WaitOnAddress")
(3) https://blogs.msdn.microsoft.com/oldnewthing/20160825-00/?p=94165
("Implementing a critical section in terms of WaitOnAddress")
(4) https://blogs.msdn.microsoft.com/oldnewthing/20160826-00/?p=94185
("Spurious wakes, race conditions, and bogus FIFO claims: A peek behind the
curtain of WaitOnAddress")
Alternative overview to the blog using Github-based WIKI:
https://github.com/mity/mctrl/wiki/Old-New-Win32API (click the sections to get
to blog entries)
WaitOnAddress()
* WaitOnAddress lets you create a synchronization object out of any data
variable, even a byte
* Implementing a synchronization barrier in terms of WaitOnAddress
* Implementing a critical section in terms of WaitOnAddress
* Extending our critical section based on WaitOnAddress to support timeouts
* Comparing WaitOnAddress with futexes (futexi? futexen?)
* Creating a semaphore from WaitOnAddress
* Creating a semaphore with a maximum count from WaitOnAddress
* Creating a manual-reset event from WaitOnAddress
* Creating an automatic-reset event from WaitOnAddress
Related: bug 45524 ("Add a futex-based implementation of condition variables")
I found multiple applications which make use of this Windows 8+ API.
Example: VLC
https://github.com/videolan/vlc/blob/master/src/win32/thread.c
Most of them have fallback implementations if the API is not available so it's
not critical to the functionality. But it's still good to have real world tests
:-)
Regards
--
Do not reply to this email, post in Bugzilla using the
above URL to reply.
You are receiving this mail because:
You are watching all bug changes.
More information about the wine-bugs
mailing list