[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <87iktrahld.ffs@tglx>
Date: Wed, 16 Oct 2024 23:00:30 +0200
From: Thomas Gleixner <tglx@...utronix.de>
To: Boqun Feng <boqun.feng@...il.com>
Cc: Dirk Behme <dirk.behme@...il.com>, Lyude Paul <lyude@...hat.com>,
rust-for-linux@...r.kernel.org, Danilo Krummrich <dakr@...hat.com>,
airlied@...hat.com, Ingo Molnar <mingo@...hat.com>, Will Deacon
<will@...nel.org>, Waiman Long <longman@...hat.com>, Peter Zijlstra
<peterz@...radead.org>, linux-kernel@...r.kernel.org, Miguel Ojeda
<ojeda@...nel.org>, Alex Gaynor <alex.gaynor@...il.com>, Wedson Almeida
Filho <wedsonaf@...il.com>, Gary Guo <gary@...yguo.net>, Björn Roy Baron
<bjorn3_gh@...tonmail.com>, Benno Lossin <benno.lossin@...ton.me>, Andreas
Hindborg <a.hindborg@...sung.com>, Alice Ryhl <aliceryhl@...gle.com>,
Trevor Gross <tmgross@...ch.edu>
Subject: Re: [PATCH v6 0/3] rust: Add irq abstraction, SpinLockIrq
On Sun, Oct 13 2024 at 14:43, Boqun Feng wrote:
> On Sun, Oct 13, 2024 at 09:06:01PM +0200, Thomas Gleixner wrote:
> But that makes `cv.wait()` not working, because interrtups would be
> still disabled when schedule() is called.
>
> I'm waiting for Lyude's new version (with lock_first(), and
> unlock_last()) to see how we can resolve this. We may need to redesign
> `CondVar::wait`.
Thinking more about this. I think there is a more general problem here.
Much of the rust effort today is trying to emulate the existing way how
the C implementations work.
I think that's fundamentally wrong because a lot of the programming
patterns in the kernel are fundamentally wrong in C as well. They are
just proliferated technical debt.
What should be done is to look at it from the rust perspective in the
first place: How should this stuff be implemented correctly?
Then you work from there and go the extra mile to create some creative
workarounds at the abstraction level instead of trying to mimic the
existing C nonsense.
Which in turn gives you a way cleaner pattern of implementing stuff in
rust.
Stop worrying about mostly irrelevant low level details which are not
relevant to the primary audience of rust adoption. We can worry about
them when we replace the scheduler and the low level interrupt handling
code ten years down the road.
Please focus on providing a sane and efficient programming environment
to get actual stuff (drivers) into the rust domain.
Thanks,
tglx
Powered by blists - more mailing lists