From: Jacek Caban <jacek@codeweavers.com>
To: LIU Hao <lh_mouse@126.com>, GCC Patches <gcc-patches@gcc.gnu.org>
Subject: Re: Adding a new thread model to GCC
Date: Fri, 21 Oct 2022 14:40:30 +0200 [thread overview]
Message-ID: <604b2d1c-b213-ac3a-0734-88b2ed53cd6a@codeweavers.com> (raw)
In-Reply-To: <38afe66e-3e5c-a3b1-89e8-43c964323229@126.com>
On 10/21/22 14:29, LIU Hao wrote:
> 在 2022/10/21 20:13, Jacek Caban 写道:
>>
>> This is not true for past 15 years, CRITICAL_SECTIONS use something
>> like RtlWaitOnAddress (an equivalent of futexes) since Vista, see
>> Wine implementation for details:
>> https://gitlab.winehq.org/wine/wine/-/blob/master/dlls/ntdll/sync.c#L190
>>
>>
>
> Ah Jacek, nice to see you here.
>
> I haven't dug into this too much, though. From my limited knowledge
> (mostly from reading disassembly) now CRITICAL_SECTION uses
> `NtWaitForAlertByThreadId` (and no longer keyed events or semaphores).
> As with `WaitOnAddress()`, there seems to be some global data
> structure, protected by a spin lock. It's just another undocumented
> syscall. Keyed events are still functional.
NtWaitForAlertByThreadId() is an underlying syscall that's used by
WaitOnAddress(). Anyway, you don't need to worry about that if you just
use public CRITICAL_SECTION APIs.
Jacek
next prev parent reply other threads:[~2022-10-21 12:41 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-01 18:34 LIU Hao
2022-10-01 20:02 ` Bernhard Reutner-Fischer
2022-10-02 12:54 ` LIU Hao
2022-10-03 5:03 ` Bernhard Reutner-Fischer
2022-10-04 8:06 ` LIU Hao
2022-10-04 19:45 ` Bernhard Reutner-Fischer
2022-10-04 12:44 ` LIU Hao
2022-10-04 13:13 ` Xi Ruoyao
2022-10-04 13:45 ` LIU Hao
2022-10-05 1:23 ` Xi Ruoyao
2022-10-10 15:56 ` LIU Hao
2022-10-11 13:22 ` LIU Hao
2022-10-14 9:39 ` Jonathan Yong
2022-10-19 13:55 ` Jonathan Yong
2022-10-19 19:53 ` Bernhard Reutner-Fischer
2022-10-20 1:25 ` LIU Hao
2022-10-21 9:58 ` Jonathan Wakely
2022-10-21 10:09 ` i.nixman
2022-10-21 10:48 ` Jonathan Wakely
2022-10-21 10:55 ` i.nixman
2022-10-21 11:36 ` LIU Hao
2022-10-21 11:54 ` i.nixman
2022-10-21 12:19 ` LIU Hao
2022-10-21 12:34 ` i.nixman
2022-10-24 3:40 ` LIU Hao
2022-10-24 20:50 ` Jacek Caban
2022-10-21 12:13 ` Jacek Caban
2022-10-21 12:29 ` LIU Hao
2022-10-21 12:40 ` Jacek Caban [this message]
2022-10-21 11:44 ` Eric Botcazou
2022-10-21 11:55 ` i.nixman
2022-10-21 12:30 ` Jacek Caban
2022-10-23 0:36 ` NightStrike
2022-10-24 6:53 ` i.nixman
2022-10-24 8:15 ` Eric Botcazou
2022-10-24 8:20 ` i.nixman
2022-10-31 9:18 ` Eric Botcazou
2022-10-31 15:22 ` i.nixman
2022-12-18 11:14 ` Jonathan Yong
2022-11-01 5:22 ` i.nixman
2022-11-01 9:09 ` Eric Botcazou
2022-11-02 12:05 ` i.nixman
2022-11-02 21:27 ` Eric Botcazou
2022-11-02 21:40 ` i.nixman
2022-12-16 17:18 ` Jonathan Wakely
2022-12-16 19:20 ` Eric Botcazou
2022-12-22 12:21 ` Jonathan Yong
2022-12-22 12:28 ` i.nixman
2022-12-23 23:59 ` Jonathan Yong
2022-12-24 5:58 ` NightStrike
2022-12-24 6:27 ` i.nixman
2022-12-24 13:50 ` i.nixman
2022-12-24 15:42 ` i.nixman
2022-12-24 15:57 ` i.nixman
2022-12-24 21:22 ` i.nixman
2022-12-25 1:10 ` Jonathan Yong
2023-01-09 21:56 ` Eric Botcazou
2022-12-24 6:22 ` i.nixman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=604b2d1c-b213-ac3a-0734-88b2ed53cd6a@codeweavers.com \
--to=jacek@codeweavers.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=lh_mouse@126.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).