All of lore.kernel.org
 help / color / mirror / Atom feed
From: jens.korinth@tuta.io
To: Alice Ryhl <aliceryhl@google.com>
Cc: "Miguel Ojeda" <ojeda@kernel.org>,
	"Alex Gaynor" <alex.gaynor@gmail.com>,
	"Boqun Feng" <boqun.feng@gmail.com>,
	"Gary Guo" <gary@garyguo.net>,
	"Björn Roy Baron" <bjorn3_gh@protonmail.com>,
	"Benno Lossin" <benno.lossin@proton.me>,
	"Andreas Hindborg" <a.hindborg@kernel.org>,
	"Trevor Gross" <tmgross@umich.edu>,
	"Rust For Linux" <rust-for-linux@vger.kernel.org>,
	"FUJITA Tomonori" <fujita.tomonori@gmail.com>,
	"Dirk Behme" <dirk.behme@gmail.com>,
	"Linux Kernel" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH v4 1/3] rust: Add `OnceLite` for executing code once
Date: Wed, 27 Nov 2024 21:12:31 +0100 (CET)	[thread overview]
Message-ID: <OCjFF0---F-9@tuta.io> (raw)
In-Reply-To: <CAH5fLgj30AmuobugAgzG9vOhSOrk5SqWwguOoNeh3J2fmLRHCA@mail.gmail.com>

> What is the use-case for this function?

`DO_ONCE_LITE` has very few uses in C; frankly, the only other use I could think
of was initialization. But since `OnceLite` cannot block or guarantee visibility
of the side-effects of the `call_once` expression in other threads, it can't be 
used for this case, either. _Unless_ there is some mechanism to wait
voluntarily when this is required, hence `is_completed`. (And it also exists in
`std::sync::Once`.)

`DO_ONCE_LITE_IF` has more uses in C, but this is a bit harder to do well with
`OnceLite`: A `do_once_lite_if` Rust macro can't short-circuit the condition to
avoid the evaluation if the atomic load already shows that it has been done / is
being done rn. Maybe a
`pub fn call_once<C: FnOnce() -> bool, F: FnOnce()>(cond: C, f: F)` could be
used to simulate the effect. Thoughts?

> Why not just have one atomic?

Do you also have an `AtomicU32` state var in mind, as Daniel suggested?

Jens

  reply	other threads:[~2024-11-27 20:12 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <8gSHb0iuAT_Wz0rR1-qsnFIVndSpW229fA0lq-fslngTt5k1ooiMw5eAIc82F26Mdma4nkyU4X7_1RLZcnQf-Q==@protonmail.internalid>
2024-11-26 16:40 ` [PATCH v4 0/3] rust: Add pr_*_once macros Jens Korinth
2024-11-26 16:40   ` Jens Korinth via B4 Relay
2024-11-26 16:40   ` [PATCH v4 1/3] rust: Add `OnceLite` for executing code once Jens Korinth
2024-11-26 16:40     ` Jens Korinth via B4 Relay
2024-11-26 18:57     ` Daniel Sedlak
2024-11-27 19:46       ` jens.korinth
2024-11-29  8:22         ` Daniel Sedlak
2024-11-26 19:00     ` Miguel Ojeda
2024-11-27 12:26     ` Alice Ryhl
2024-11-27 20:12       ` jens.korinth [this message]
2024-11-27 20:18         ` Alice Ryhl
2024-12-05  6:49           ` jens.korinth
2024-12-05  8:47             ` Alice Ryhl
2025-02-04 11:11     ` Andreas Hindborg
2024-11-26 16:40   ` [PATCH v4 2/3] rust: print: Add pr_*_once macros Jens Korinth
2024-11-26 16:40     ` Jens Korinth via B4 Relay
2024-11-26 16:40   ` [PATCH v4 3/3] rust: error: Replace pr_warn by pr_warn_once Jens Korinth
2024-11-26 16:40     ` Jens Korinth via B4 Relay
2024-11-26 17:07     ` Miguel Ojeda
2024-11-27 20:39       ` jens.korinth
2024-11-30 18:18         ` Miguel Ojeda
2024-12-05  6:30           ` jens.korinth
2024-12-05 11:55             ` Miguel Ojeda
2024-12-05 19:22               ` jens.korinth
2024-11-26 16:59   ` [PATCH v4 0/3] rust: Add pr_*_once macros Miguel Ojeda
2025-02-11 15:04   ` Andreas Hindborg
2025-02-11 15:29     ` jens.korinth
2025-02-11 15:42       ` Andreas Hindborg
2025-07-17 16:07         ` [PATCH v4 0/3] rust: Add pr_*_once macros134 Onur Özkan
2025-07-19  3:33           ` Boqun Feng
2025-07-19 16:33             ` Onur

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=OCjFF0---F-9@tuta.io \
    --to=jens.korinth@tuta.io \
    --cc=a.hindborg@kernel.org \
    --cc=alex.gaynor@gmail.com \
    --cc=aliceryhl@google.com \
    --cc=benno.lossin@proton.me \
    --cc=bjorn3_gh@protonmail.com \
    --cc=boqun.feng@gmail.com \
    --cc=dirk.behme@gmail.com \
    --cc=fujita.tomonori@gmail.com \
    --cc=gary@garyguo.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ojeda@kernel.org \
    --cc=rust-for-linux@vger.kernel.org \
    --cc=tmgross@umich.edu \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.