[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 06/15] rust: cell: add wrapper for FFI types
From: |
Zhao Liu |
Subject: |
Re: [PATCH 06/15] rust: cell: add wrapper for FFI types |
Date: |
Tue, 25 Feb 2025 14:46:10 +0800 |
> + /// Creates a new opaque object with zeroed contents.
> + ///
> + /// # Safety
> + ///
> + /// Ultimately the pointer to the returned value will be dereferenced
> + /// in another unsafe block, for example when passing it to a C function.
> + /// However, this function is unsafe to "force" documenting whether a
> + /// zero value is safe.
> + pub const unsafe fn zeroed() -> Self {
> + Self {
> + value: UnsafeCell::new(MaybeUninit::uninit()),
typo? MaybeUninit::zeroed()
> + _pin: PhantomPinned,
> + }
> + }
> +
> + /// Returns a raw pointer to the opaque data.
Maybe "a raw mutable pointer".
> + pub const fn as_mut_ptr(&self) -> *mut T {
> + UnsafeCell::get(&self.value).cast()
> + }
> +
> + /// Returns a raw pointer to the opaque data.
> + pub const fn as_ptr(&self) -> *const T {
> + self.as_mut_ptr() as *const _
> + }
> +
> + /// Returns a raw pointer to the opaque data.
What about "Returns a raw c_void type pointer"?
(Because the descriptions of these three helpers are exactly the same!
We can make them different.)
zeroed
> + pub const fn as_void_ptr(&self) -> *mut std::ffi::c_void {
> + UnsafeCell::get(&self.value).cast()
> + }
> +}
The whole idea is great! With the nit of zeroed fixed,
Reviewed-by: Zhao Liu <zhao1.liu@intel.com>
- Re: [PATCH 02/15] rust: add SysBusDeviceImpl, (continued)
- [PATCH 04/15] rust: pl011, qemu_api tests: do not use ClassInitImpl, Paolo Bonzini, 2025/02/21
- [PATCH 05/15] rust: qom: get rid of ClassInitImpl, Paolo Bonzini, 2025/02/21
- [PATCH 08/15] rust: timer: wrap QEMUTimer with Opaque<>, Paolo Bonzini, 2025/02/21
- [PATCH 07/15] rust: qemu_api_macros: add Wrapper derive macro, Paolo Bonzini, 2025/02/21
- [PATCH 06/15] rust: cell: add wrapper for FFI types, Paolo Bonzini, 2025/02/21
- Re: [PATCH 06/15] rust: cell: add wrapper for FFI types,
Zhao Liu <=
- [PATCH 09/15] rust: irq: wrap IRQState with Opaque<>, Paolo Bonzini, 2025/02/21
- [PATCH 10/15] rust: qom: wrap Object with Opaque<>, Paolo Bonzini, 2025/02/21
- [PATCH 12/15] rust: sysbus: wrap SysBusDevice with Opaque<>, Paolo Bonzini, 2025/02/21
- [PATCH 11/15] rust: qdev: wrap Clock and DeviceState with Opaque<>, Paolo Bonzini, 2025/02/21