From: Zhao Liu <zhao1.liu@intel.com>
To: Paolo Bonzini <pbonzini@redhat.com>
Cc: "Manos Pitsidianakis" <manos.pitsidianakis@linaro.org>,
"Junjie Mao" <junjie.mao@hotmail.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Richard Henderson" <richard.henderson@linaro.org>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Daniel P . Berrangé" <berrange@redhat.com>,
qemu-devel@nongnu.org, qemu-rust@nongnu.org
Subject: Re: [PATCH 03/10] rust/irq: Add a helper to convert [InterruptSource] to [*mut IRQState]
Date: Fri, 7 Feb 2025 15:10:53 +0800 [thread overview]
Message-ID: <Z6Wx/RGBIElMaeZy@intel.com> (raw)
In-Reply-To: <17907481-89d6-457c-bcd3-66a444b1325d@redhat.com>
On Wed, Jan 29, 2025 at 11:51:02AM +0100, Paolo Bonzini wrote:
> Date: Wed, 29 Jan 2025 11:51:02 +0100
> From: Paolo Bonzini <pbonzini@redhat.com>
> Subject: Re: [PATCH 03/10] rust/irq: Add a helper to convert
> [InterruptSource] to [*mut IRQState]
>
> On Sat, Jan 25, 2025 at 1:32 PM Zhao Liu <zhao1.liu@intel.com> wrote:
> >
> > This is useful to hanlde InterruptSource slice and pass it to C
> > bindings.
> >
> > Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
>
> This may be a bad suggestion, after all. clippy complains that you're
> casting &[*mut IRQState] to mutable (https://rust-lang.github.io/rust-
> clippy/master/#as_ptr_cast_mut).
>
> I can think of two solutions:
>
> 1) add #[allow(clippy::as_ptr_cast_mut)] and explain with a comment
>
> // Casting to *mut *mut IRQState is valid, because
> // the source slice `pins` uses interior mutability.
>
> 2) drop as_slice_of_qemu_irq() and replace it with something like
>
> pub(crate) const fn slice_as_ptr(slice: &[Self]) -> *mut *mut IRQState {
> slice[0].as_ptr()
> }
>
> You choose.
>
:) I choose the second way, which goes back to the initial codes.
Though an empty slice w/o any check would cause a runtime error like:
"thread '<unnamed>' panicked at 'index out of bounds: the len is 0 but the index is 0'"
Adding an assert to ensure a non-empty slice is better.
Thanks,
Zhao
next prev parent reply other threads:[~2025-02-07 6:52 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-01-25 12:51 [PATCH 00/10] rust: Add HPET timer device Zhao Liu
2025-01-25 12:51 ` [PATCH 01/10] i386/fw_cfg: move hpet_cfg definition to hpet.c Zhao Liu
2025-01-25 12:51 ` [PATCH 02/10] rust/qdev: add the macro to define bit property Zhao Liu
2025-01-25 12:51 ` [PATCH 03/10] rust/irq: Add a helper to convert [InterruptSource] to [*mut IRQState] Zhao Liu
2025-01-29 10:51 ` Paolo Bonzini
2025-02-07 7:10 ` Zhao Liu [this message]
2025-02-07 7:44 ` Zhao Liu
2025-02-07 9:57 ` Paolo Bonzini
2025-02-08 11:14 ` Zhao Liu
2025-02-08 11:39 ` Paolo Bonzini
2025-02-08 18:10 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 04/10] rust: add bindings for gpio_{in|out} initialization Zhao Liu
2025-01-29 10:59 ` Paolo Bonzini
2025-02-07 8:43 ` Zhao Liu
2025-02-07 9:54 ` Paolo Bonzini
2025-02-08 11:16 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 05/10] rust: add bindings for memattrs Zhao Liu
2025-01-25 12:51 ` [PATCH 06/10] rust: add bindings for timer Zhao Liu
2025-01-29 10:58 ` Paolo Bonzini
2025-02-07 13:33 ` Zhao Liu
2025-02-07 14:55 ` Paolo Bonzini
2025-02-08 11:08 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 07/10] rust/timer/hpet: define hpet_cfg Zhao Liu
2025-01-29 10:58 ` Paolo Bonzini
2025-02-07 14:30 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 08/10] rust/timer/hpet: add basic HPET timer and HPETState Zhao Liu
2025-01-29 10:57 ` Paolo Bonzini
2025-02-08 8:19 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 09/10] rust/timer/hpet: add qom and qdev APIs support Zhao Liu
2025-01-29 10:58 ` Paolo Bonzini
2025-02-08 10:55 ` Zhao Liu
2025-02-08 11:41 ` Paolo Bonzini
2025-02-08 18:06 ` Zhao Liu
2025-01-25 12:51 ` [PATCH 10/10] i386: enable rust hpet for pc when rust is enabled Zhao Liu
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=Z6Wx/RGBIElMaeZy@intel.com \
--to=zhao1.liu@intel.com \
--cc=alex.bennee@linaro.org \
--cc=berrange@redhat.com \
--cc=junjie.mao@hotmail.com \
--cc=manos.pitsidianakis@linaro.org \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-rust@nongnu.org \
--cc=richard.henderson@linaro.org \
/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.