[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-Id: <20241004.205422.282358302534878118.fujita.tomonori@gmail.com>
Date: Fri, 04 Oct 2024 20:54:22 +0900 (JST)
From: FUJITA Tomonori <fujita.tomonori@...il.com>
To: andrew@...n.ch
Cc: boqun.feng@...il.com, fujita.tomonori@...il.com,
dirk.behme@...bosch.com, aliceryhl@...gle.com, netdev@...r.kernel.org,
rust-for-linux@...r.kernel.org, hkallweit1@...il.com, tmgross@...ch.edu,
ojeda@...nel.org, alex.gaynor@...il.com, gary@...yguo.net,
bjorn3_gh@...tonmail.com, benno.lossin@...ton.me, a.hindborg@...sung.com
Subject: Re: iopoll abstraction
On Thu, 3 Oct 2024 18:00:36 +0200
Andrew Lunn <andrew@...n.ch> wrote:
>> > fn read_poll_timeout<Op, Cond, T: Copy>(
>> > mut op: Op,
>> > cond: Cond,
>> > sleep: Delta,
>> > timeout: Delta,
>> > ) -> Result<T>
>> > where
>> > Op: FnMut() -> Result<T>,
>> > Cond: Fn(T) -> bool,
>> > {
>> > let timeout = Ktime::ktime_get() + timeout;
>> > let ret = loop {
>> > let val = op()?;
>> > if cond(val) {
>> > break Ok(val);
>> > }
>> > kernel::delay::sleep(sleep);
>> >
>> > if Ktime::ktime_get() > timeout {
>> > break Err(code::ETIMEDOUT);
>> > }
>> > };
>> >
>> > ret
>> > }
>
> This appears to have the usual bug when people implement it themselves
> and i then point them at iopoll.h, which so far as been bug free.
Ah, in the next submission, I'll try to ensure that the Rust version
works the same way as the C version.
Powered by blists - more mailing lists