8
8
use crate :: {
9
9
alloc:: Flags ,
10
10
bindings,
11
- device:: Device ,
11
+ device:: { Bound , Device } ,
12
12
error:: { Error , Result } ,
13
13
ffi:: c_void,
14
14
prelude:: * ,
@@ -45,7 +45,7 @@ struct DevresInner<T> {
45
45
/// # Example
46
46
///
47
47
/// ```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}};
49
49
/// # use core::ops::Deref;
50
50
///
51
51
/// // See also [`pci::Bar`] for a real example.
@@ -83,13 +83,10 @@ struct DevresInner<T> {
83
83
/// unsafe { Io::from_raw(&self.0) }
84
84
/// }
85
85
/// }
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> {
90
87
/// // SAFETY: Invalid usage for example purposes.
91
88
/// 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)?;
93
90
///
94
91
/// let res = devres.try_access().ok_or(ENXIO)?;
95
92
/// res.write8(0x42, 0x0);
@@ -99,7 +96,7 @@ struct DevresInner<T> {
99
96
pub struct Devres < T > ( Arc < DevresInner < T > > ) ;
100
97
101
98
impl < 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 > > > {
103
100
let inner = Arc :: pin_init (
104
101
pin_init ! ( DevresInner {
105
102
dev: dev. into( ) ,
@@ -171,15 +168,15 @@ impl<T> DevresInner<T> {
171
168
impl < T > Devres < T > {
172
169
/// Creates a new [`Devres`] instance of the given `data`. The `data` encapsulated within the
173
170
/// 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 > {
175
172
let inner = DevresInner :: new ( dev, data, flags) ?;
176
173
177
174
Ok ( Devres ( inner) )
178
175
}
179
176
180
177
/// Same as [`Devres::new`], but does not return a `Devres` instance. Instead the given `data`
181
178
/// 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 {
183
180
let _ = DevresInner :: new ( dev, data, flags) ?;
184
181
185
182
Ok ( ( ) )
0 commit comments