88use crate :: {
99 alloc:: Flags ,
1010 bindings,
11- device:: Device ,
11+ device:: { Bound , Device } ,
1212 error:: { Error , Result } ,
1313 ffi:: c_void,
1414 prelude:: * ,
@@ -45,7 +45,7 @@ struct DevresInner<T> {
4545/// # Example
4646///
4747/// ```no_run
48- /// # use kernel::{bindings, c_str, device::Device, devres::Devres, io::{Io, IoRaw}};
48+ /// # use kernel::{bindings, c_str, device::{Bound, Device} , devres::Devres, io::{Io, IoRaw}};
4949/// # use core::ops::Deref;
5050///
5151/// // See also [`pci::Bar`] for a real example.
@@ -83,13 +83,10 @@ struct DevresInner<T> {
8383/// unsafe { Io::from_raw(&self.0) }
8484/// }
8585/// }
86- /// # fn no_run() -> Result<(), Error> {
87- /// # // SAFETY: Invalid usage; just for the example to get an `ARef<Device>` instance.
88- /// # let dev = unsafe { Device::get_device(core::ptr::null_mut()) };
89- ///
86+ /// # fn no_run(dev: &Device<Bound>) -> Result<(), Error> {
9087/// // SAFETY: Invalid usage for example purposes.
9188/// let iomem = unsafe { IoMem::<{ core::mem::size_of::<u32>() }>::new(0xBAAAAAAD)? };
92- /// let devres = Devres::new(& dev, iomem, GFP_KERNEL)?;
89+ /// let devres = Devres::new(dev, iomem, GFP_KERNEL)?;
9390///
9491/// let res = devres.try_access().ok_or(ENXIO)?;
9592/// res.write8(0x42, 0x0);
@@ -99,7 +96,7 @@ struct DevresInner<T> {
9996pub struct Devres < T > ( Arc < DevresInner < T > > ) ;
10097
10198impl < T > DevresInner < T > {
102- fn new ( dev : & Device , data : T , flags : Flags ) -> Result < Arc < DevresInner < T > > > {
99+ fn new ( dev : & Device < Bound > , data : T , flags : Flags ) -> Result < Arc < DevresInner < T > > > {
103100 let inner = Arc :: pin_init (
104101 pin_init ! ( DevresInner {
105102 dev: dev. into( ) ,
@@ -171,15 +168,15 @@ impl<T> DevresInner<T> {
171168impl < T > Devres < T > {
172169 /// Creates a new [`Devres`] instance of the given `data`. The `data` encapsulated within the
173170 /// returned `Devres` instance' `data` will be revoked once the device is detached.
174- pub fn new ( dev : & Device , data : T , flags : Flags ) -> Result < Self > {
171+ pub fn new ( dev : & Device < Bound > , data : T , flags : Flags ) -> Result < Self > {
175172 let inner = DevresInner :: new ( dev, data, flags) ?;
176173
177174 Ok ( Devres ( inner) )
178175 }
179176
180177 /// Same as [`Devres::new`], but does not return a `Devres` instance. Instead the given `data`
181178 /// is owned by devres and will be revoked / dropped, once the device is detached.
182- pub fn new_foreign_owned ( dev : & Device , data : T , flags : Flags ) -> Result {
179+ pub fn new_foreign_owned ( dev : & Device < Bound > , data : T , flags : Flags ) -> Result {
183180 let _ = DevresInner :: new ( dev, data, flags) ?;
184181
185182 Ok ( ( ) )
0 commit comments